ExcelVBAマクロについて確認させてください。
下記のようにマクロのあるカレントフォルダに存在するファイルのなかから
読み込みたいファイルの名前を手入力してそれを変数aに読み込ませています。
ですが、この方法ですとユーザがいちいち手入力しなければならず、
ユーザ負担が大きいのと入力漏れおよび入力ミスが発生する恐れがあります。
そこで、マウスでファイルをクリックして指定するように基礎的な操作をマウスによって
行うGUIを作成したいのですが、ExcelVBAマクロで可能でしょうか。
あるいはExcelVBAに導入が可能なソフトウェアおよびそれが可能なソフトウェア
があればぜひご教授ください。
以上、よろしくお願いいたします。
----------------------------------
Sub sample()
Dim FN As String
Dim FullPathFileName1 As String
Dim a As String
FN = InputBox("読み込むファイル名を入力してください。(拡張子も含む。)")
FullPathFileName1 = ThisWorkbook.Path & "\" & FN
a = CreateObject("Scripting.FileSystemObject").GetFile(FullPathFileName1).OpenAsTextStream.Readall
a = Replace(a, vbCrLf, "") '改行コードの削除
CreateObject("Scripting.FileSystemObject").GetFile(FullPathFileName1).OpenAsTextStream.Close
End Sub
マイクロソフトが用意した、ファイル指定のダイアロウグがある。
こういうのを思い至らないのかな。VBAの解説書を読んでいないか、WEBも調べてないのだろう。
Googleででも「VBA ファイル指定 ダイアロウグ」「VBA ファイル選択 ダイアロウグ」で照会すればすぐ判る。
沢山記事がある。
他人に使ってもらうレベルのVBAを作るなら、この程度のことはするようでなければ。
Sub test01()
Application.GetOpenFilename FileFilter:="エクセルファイル(*.xls),*.xls", FilterIndex:=1, Title:="開けゴマ", MultiSelect:=False
End Sub
そのほかに
「VBA commondialogs」で照会
「VBA application.dialog」で照会
Sub test02()
Application.Dialogs(xlDialogOpen).Show ARG1:="ABC.xls" ', ARG2:=1
End Sub
ーー
InputBoxでも、番号つきでファイル名を表示して番号を入力させることもできるだろう(少数の候補の場合)
Sub test03()
f = Array("aa.xls", "bb.xls", "cc.xls", "dd.xls")
fc=fc & "番号を入力" & vblf
For i = 0 To UBound(f)
fc = fc & i & " " & f(i) & vbLf
Next
x = InputBox(fc)
MsgBox f(x)
End Sub
お礼
ご返事が遅くなり、申し訳ございません。 色々とご助言ありがとうございます。 ご助言の通り、色々と試行してみましたところ、 うまく実行出来ました。 また今後Webなども活用していきたいと思います。 このたびは本当にありがとうございました。