Excel VBA Macro ・ ラベル・コントロール ・ FAQ
Labelのフォントカラーをフォームの色と同色にして隠したら?
Question 80.6
Excel VBA Borad (掲示板)より
始めまして。 宜しくお願いします。
質問は、“ユーザーフォームで取得したファイルパスや変数をモジュールに持ち帰る方法を教えて下さい” です。
現状としましては、
1. マクロを組む際に使い勝手を考えて、ユーザーフォームを設定しました。
2. ユーザーフォームには、
・ある処理を実行するファイルのパスを取得するためにファイルを選択する CommandButton1
・処理プログラムを実行するための CommandButton2
・ファイルパスを表示する TextBox があります。
3. コマンドボタンを押して、ファイルパスを取得することに成功しました。使用したコードは次のとおりです。
file_path=Application.GetOpenFilename
4. 取得したパスをテキストボックスに全て表示しています。
TextBox=file_path
5. 実行のボタンを押す事で、ユーザーフォームを非表示にし、モジュールに組んだ処理プログラムを実行しています。
6. 3.で取得したファイルパスをモジュールで使う際は、 UserForm.TextBox.Value
として取得してます。
ここで私がしたいことは、 ●テキストボックスにファイルパスを全て表示するのではなく、ファイルの名前だけを表示したい。 ということです。
しかし、テキストボックスにファイル名のみを表示してしまうと、6.の手順ではファイルの場所が特定できず、ファイルの展開が不可能でした。
簡単なことかもしれませんが、どうすれば良いか分からず困っています。
何卒アドバイスを宜しくお願いします。
A. テキストボックスの値を使用せずに、再度フルパスを取得するか、
B. フルパスを別のところに格納しておけば良いのではないでしょうか。 例えば、Label1 にフルパスを書き込み、フォントカラーをフォームの色と同じにしてしまえばユーザーには見えません。
C. または、テキストボックスの値が Null の場合はコマンドボタンの Caption を "取得" とし、テキストボックスに値が入力された場合は Caption を "実行" とします。 Captin の値を判断して1つのコマンドボタンで処理をすれば、file_path を Static 変数に設定してフルパスを格納しておけると思います。 (解りづらくて、申し訳ありません) ※ A. B. C.の表現はWeb Masterが付加しました
お返事が遅れてしまい、申し訳ありません。試させていただきましたので報告させていただきます。
A. について
Application.GetOpenFileName
以外のパス取得方法が分からず、実行できませんでした。
B. について
これはとっても簡単に実行できました。 プログラムの編集作業をしなければラベルは見えないので、別の方が使っても「気にならない」とのことでした。
今までだと、フルパスがテキストボックスに表示されて、自分の選択したファイル名が分からない状態でしたが、ファイル名を一目で確認できるようになり、随分と利用し易くなりました。
C. について
申し訳ありません、内容の理解にもう少し(かなり)時間が必要かと思いますので、こちらはじっくり進めていきたいと思います。
これからもVBAの勉強は続けたいと思います。また、分からないことがありましたらこちらの掲示板に投稿させていただきたいと思いますので、その時は宜しくお願いします。 有り難うございました。