
VBAでファイルを開くのはめちゃくちゃ簡単です。
ファイルのパス(アドレス)をコピペするだけ。
私はfor文すら知らないプログラミングのド素人からVBAとPythonを独学しました。
会社では通常業務に加えて作業自動化と機械学習をしています。

・ファイルを自動で開きたい
・ほかのファイルからデータを引っ張りたい
・一連の事務作業をすべて自動化したい
こんな人におススメの記事です。
必要なことは、ファイルのパス(保存されている場所)を手に入れるだけ。
Workooks.Open
ファイルの開き方
以下2つのファイルがデスクトップにあると仮定します。

“VBA.xlsm” :プログラム実行ファイル(コードを書くファイル)
“VBA.xlsm” にプログラムを書いて、”Book1.xlsx”を開きましょう。
Sub test()
Workbooks.Open ("C:\Users\HTOM\Desktop\Book1.xlsx")
End Sub

ファイルのパスとは、”そのファイルがどこにあるか”を示す文字列です。
例えば、デスクトップにある”Book1.xlsx”のパスは以下の通り。


ユーザー名は人によって違うので注意してくださいね。
ちなみに、¥はフォルダ間の境界を意味します。

パスってどうやって確かめるの?

このようにアドレスバーをクリックするとフォルダまでのパスが全選択されます。
コピペして¥とファイル名を加えてあげれば完成です。


フォルダまではコピペして、ファイル名は入力しましょう。
パスの変数化
パスはできるだけ変数でまとめることをおススメします。
Sub test()
folderPath = "C:\Users\HTOM\Desktop"
Filename = "Book1.xlsx"
fullPath = folderPath & "\" & Filename
MsgBox fullPath
Workbooks.Open (fullPath)
End Sub

こうすると、filePathをアドレスバーからコピペするだけでフォルダのパスを調整できます。
ファイル名を変えたいなら、Filenameを書き換えるだけでOKです。

なんか意味がないように感じますが、後々でコードを変える際に役立ちますよ。
ファイル名を入力して開く方法
開きたいファイルの名前が毎回違うことがありますよね。
こんな時に、コードのファイル名を毎回書き換えるのは面倒です。
なので、開きたいファイルの名前を入力する形式にしてみましょう。
Sub test()
folderPath = "C:\Users\HTOM\Desktop"
Filename = InputBox("ファイル名を入力(デスクトップ上)")
fullPath = folderPath & "\" & Filename
Workbooks.Open (fullPath)
End Sub
FilenameをInputBoxで入力するようにしました。
こうすると、デスクトップにある好きなファイル名を指定するだけで開けます。

ちなみに拡張子(“.xlsx”など)や大文字小文字は気にしなくてOKです。
ただし”Book1.xlsm”のように拡張子まで指定すると、拡張子が違う”Book1.xlsx”は開けないので注意しましょう。

フォルダは指定できないの?
フォルダまで入力欄で指定するのは難しいです。
実務で使うなら、例えば測定データの保存先は”測定”ファイルに固定するなど、ちょっとした制限が必要です。

フォルダも指定したいなら、
次に紹介するGetOpenFilenameがおススメ。
ウィンドウでファイルを指定して開く方法
GetOpenFilename
デスクトップに複数ファイルがあるとします。

Sub test()
Filename = Application.GetOpenFilename()
MsgBox Filename
End Sub
このプログラムを実行すると、ファイルを開く画面が現れます。

好きなファイルを指定して”開く”を押すと、ファイルのパスが出力されるはずです。

パスが手に入った…ということは…ハッ!!

そう。開ける。
手に入れたパスをOpenの中に入れてしまいましょう。
Sub test()
Filename = Application.GetOpenFilename()
Workbooks.Open (Filename)
End Sub
すると選択したファイルが開けるようになります。
複数のファイルを指定して開く方法
GetOpenFilenameなら、1度に複数のファイルを開くことができます。
Sub test()
filename = Application.GetOpenFilename(MultiSelect:=True)
MsgBox UBound(filename)
End Sub

MultiSelectをTrueに設定します。
出力は配列形式です。
例えば上図なら、計4つのファイルのパスが1つの配列データとして保存されます。
UBoundは配列の中にあるデータ数をカウントするコードです。
なので、ファイルを4つ指定したなら配列の長さも4です。
Sub test()
filename = Application.GetOpenFilename(MultiSelect:=True)
For i = 1 To UBound(filename)
MsgBox filename(i)
Workbooks.Open (filename(i))
Next i
End Sub
for文でfilenameの中身に1つずつアクセスしましょう。
最初のパスはfilename(1)で取り出せるので、iは1から始めます。
実行して好きなファイルを指定すると、全ファイルが開かれるはずです。
まとめ
今回はファイルを開く方法を解説しました。
とにかく必ずWorkbooks.Openが必要です。
そして、ファイルのパスを入手する方法がいくつかあります。
・InputBoxでファイル名を入力(フォルダが固定される)
・GetOpenFilenameで指定(配列の概念を理解する必要あり)
無事に開けたらコピペとかもやってみましょう。
コメント