【VBA】Excelマクロでファイル(ブック)を開く方法

VBA
スポンサーリンク

Workbooks.Open()で開きたいファイルのパスを指定するだけです。

ファイルを開くコード

ファイルのパス(保存されている場所)さえわかれば、誰でも実装できます。

Workooks.Open

ファイルの開き方

例えば、以下2つのファイルがデスクトップにあるとします。

“VBA.xlsm” にプログラムを書いて、”Book1.xlsx”を開きましょう。

デスクトップにあるExcelファイル
“Book1.xlsx”:開きたいファイル
“VBA.xlsm”  :プログラム実行ファイル(コードを書くファイル)
Sub test()

Workbooks.Open ("C:\Users\HTOM\Desktop\Book1.xlsx")

End Sub
ファイルを開くコード

ファイルのパスとは、”そのファイルがどこにあるか”を示す文字列のことです。

例えば、デスクトップにある”Book1.xlsx”のパスは以下の通り。

パスの指定方法

ユーザー名は人によって違うので注意してくださいね。

ちなみに、¥はフォルダ間の境界を意味します。

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

パスを確かめる方法

このようにアドレスバーをクリックするとフォルダまでのパスが全選択されます。

コピペして¥とファイル名を足してあげれば完成です。

パスをコピペする方法

フォルダまではコピペして、ファイル名は入力。

今回はデスクトップに置いてある前提でしたが、

ドキュメントフォルダなら、C:\Users\[ユーザー名]\Documents\[ファイル名]
Cドライブ直下なら、C:\[ファイル名]

とかになりますね。

パスの変数化

パスは変数でまとめることをおススメします。

Sub test()

folderPath = "C:\Users\HTOM\Desktop"
Filename = "Book1.xlsx"
fullPath = folderPath & "\" & Filename

MsgBox fullPath
Workbooks.Open (fullPath)

End Sub
パスの変数化

こうすると、filePathをアドレスバーからコピペするだけでフォルダのパスを調整できます。

ファイル名を変えたいなら、Filenameを書き換えるだけでOKです。

なんか意味がないように感じますが、後々コードを修正する際に役立ちますよ。

ファイル名を入力して開く方法

毎回開くファイルが異なる場合の話です。

コード内のファイル名を毎回書き換えるのは面倒ですよね。

そんな時はInputBoxを組み合わせます。

Sub test()

folderPath = "C:\Users\HTOM\Desktop"
Filename = InputBox("ファイル名を入力(デスクトップ上)")
fullPath = folderPath & "\" & Filename

Workbooks.Open (fullPath)

End Sub

FilenameをInputBoxで入力するようにしました。

こうすると、デスクトップにある好きなファイル名を指定するだけで開けます。

InputBoxでファイル名を指定

ちなみに拡張子(“.xlsx”など)や大文字小文字は気にしなくてOKです。

ただし”Book1.xlsm”のように拡張子まで指定すると、拡張子が違う”Book1.xlsx”は開けないので注意しましょう。

フォルダは指定できないの?

フォルダまで入力欄で指定するのは難しいです。

実務で使うなら、例えば測定データの保存先は”測定”フォルダに固定するなど、ちょっとした制限が必要です。

フォルダも指定したいなら、

次に紹介するGetOpenFilenameがおススメ。

ウィンドウでファイルを指定して開く方法

GetOpenFilename

デスクトップに複数ファイルがあるとします。

デスクトップにある複数のファイル
Sub test()

Filename = Application.GetOpenFilename()
MsgBox Filename

End Sub

このプログラムを実行すると、ファイルを開くウィンドウが現れます。

GetOpenFilenameで開くファイルを指定

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

手に入れたパスをWorkbooks.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に設定します。

GetOpenFilenameで複数のファイルを開く

出力は配列形式です。

例えば上図なら、計4つのファイルのパスが入った配列データとなります。

UBoundは配列の中にあるデータ数をカウントするコードです。

なので、ファイルを4つ指定したなら配列の長さも4です。

パスが手に入ったので、これらもOpen()に入れればファイルが開けます。

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()に入れる

パスを手に入れる方法が複数通りあるよってだけの話ですね。

無事に開けたらコピペとかもやってみましょう!

コメント

タイトルとURLをコピーしました