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

VBA
スポンサーリンク

VBAでファイルを開くのはめちゃくちゃ簡単です。

ファイルのパス(アドレス)をコピペするだけ。

私はfor文すら知らないプログラミングのド素人からVBAとPythonを独学しました。

会社では通常業務に加えて作業自動化と機械学習をしています。

ファイルを自動で開きたい
・ほかのファイルからデータを引っ張りたい
・一連の事務作業をすべて自動化したい

こんな人におススメの記事です。

必要なことは、ファイルのパス(保存されている場所)を手に入れるだけ。

Workooks.Open

ファイルの開き方

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

デスクトップにあるExcelファイル
“Book1.xlsx”:開きたいファイル
“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で入力するようにしました。

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

InputBoxでファイル名を指定

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

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

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

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

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

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

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

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

GetOpenFilename

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

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

Filename = Application.GetOpenFilename()
MsgBox Filename

End Sub

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

GetOpenFilenameで開くファイルを指定

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

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

そう。開ける。

手に入れたパスを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
GetOpenFilenameで複数のファイルを開く

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で指定(配列の概念を理解する必要あり)

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

VBA
スポンサーリンク
HTOMblog

コメント

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