
マクロでエクセルファイルを編集しているんだけど、
別のファイルを開いて操作したい…。
マクロでファイルを開く方法を教えて!

なるほど…。
では今回は、「VBAのマクロを使ってファイルを開く方法」を
VBAマクロ歴3年の私が、できるだけわかりやすく解説いたします。
また、「ファイルを開いた後の操作例」も紹介いたしますので、
ぜひ最後まで読んでいってください。
ファイルを開く方法(VBAマクロ)
「Workbooks.Open」を使います。
まずは実行見本をどうぞ。
実行見本
ひとまず全コードと実行結果をご覧ください。
解説は後ほど行います。
全コード
Sub ファイルを開く()
Workbooks.Open Filename:="C:\Utatane\test.xlsx"
End Sub
実行結果

解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
プロシージャの作成
Sub ファイルを開く()
End Sub
プロシージャなど、マクロの基礎は下記記事でわかりやすく解説しております。
コードだけではなく、開発タブの表示からマクロの保存まで知りたい方はご参考ください。
ファイルを開く
Workbooks.Open Filename:="C:\Utatane\test.xlsx"
上記コードにて、エクセルファイル(ブック)を開いております。
【 Workbooks.Open Filename:=”開きたいファイルのパス“ 】
「Workbooks.Open」を書いたら、半角スペースを書きます。
「Workbooks.Open」は大文字と小文字が混在しているため注意してください。
半角スペースの後ろに「Filename:=」を書いたら、「開きたいファイルのパス」を書いて完了です。
ファイルパスは「”(ダブルクォーテーション)」で囲ってください。
【ファイルパスとは?】
ファイルの保存先やファイル名を1行で表したものです。
ファイルの保存先は、ファイルが入っているフォルダを開くことで確認できます。
フォルダ上部のアドレスバーをクリックしてみてください。

「C:\○○」という表な表示になったら、それが保存先です。
(例:「C:\Utatane」)
あとは「\」と「ファイル名」をつなげれば、ファイルパスとなります。
(例:「C:\Utatane\test.xlsx」)
マクロが完成したら、実行して動作を確認してみましょう。

エクセル内に作成した自作のボタンを押してマクロを実行させることも可能です。
ボタンの作り方は、下記記事でわかりやすく解説しております。
ここまでで、一番シンプルなファイルの開き方を紹介いたしました。
次項では、いろいろ方法でファイルを開くパターンを紹介いたします。
いろいろなファイルの開き方
読み取り専用で開く
誤ってファイル内のデータを書き換えしたくない場合は、読み取り専用で開くのがおすすめです。
Sub 読み取り専用で開く()
Workbooks.Open Filename:="C:\Utatane\test.xlsx", ReadOnly:=True
End Sub
前項と比べて「ReadOnly:=True」が追加されただけです。
これでファイルを「読み取り専用」で開くことができ、書き換えられる心配はありません。

変数に格納したパスでファイルを開く
ファイルパスを直接指定せず、変数を経由してファイルを開くこともできます。
Sub 変数に格納したパスでファイルを開く()
Dim filePath As String
filePath = "C:\Utatane\test.xlsx"
Workbooks.Open Filename:=filePath
End Sub
【コードの2行目】
パスを格納する変数の宣言を行っております。
変数や宣言についての詳しい解説は、下記記事をご参考ください。
【コードの3行目】
2行目で宣言した変数にファイルパスを格納しています。
【コードの4行目】
ファイルを開いています。
本来パスを指定する部分に変数を書くことによって、変数に格納されたパスでファイルを開くことができます。
開くファイルを選ぶ
開くファイルは決まっていないけれど、ファイルを開く「ダイアログ」だけ出したい場合は、下記の方法がおすすめです。
Sub 開くファイルを指定1()
Dim filePath As String
filePath = Application.GetOpenFilename("Excel Files (*.xlsx;*.xls), *.xlsx;*.xls")
If filePath <> "False" Then
Workbooks.Open filePath
End If
End Sub

ファイルを開くダイアログが表示されました。
あとはマクロを実行した者が、開くファイルを選ぶという流れになります。
Ifはファイルを開かずにキャンセルされたときのために、条件分岐を指定しています。
If文については下記記事でわかりやすく解説しております。ご参考ください。
今回はエクセルファイルに絞って表示させましたが、フォルダ内のすべてのファイルを表示したい場合は、下記の通り()内を空白にしてください。
filePath = Application.GetOpenFilename()

フォルダ内の全てのファイルを開く
Sub 全てのファイルを開く()
Dim filePath As String
filePath = Dir("C:\Utatane\*.xlsx")
Do While filePath <> ""
Workbooks.Open "C:\Utatane\" & filePath
filePath = Dir
Loop
End Sub
Whileにてファイルが無くなるまで「開く→次へ」をループさせています。
While文については下記記事でわかりやすく解説しております。ご参考ください。
【注意点】
フォルダ内に大量のファイルがある場合、それらが全て開かれます。
多すぎるとメモリ不足になったり、最悪フリーズする場合がありますので、ご注意ください。
ここまでで、ファイルを開く方法を紹介・解説いたしました。
次項では、開いたファイルを操作する一例を紹介いたします。
開いたファイルの操作例
シンプルな一例を紹介いたします。
Sub ファイルを操作()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Utatane\test.xlsx")
wb.Sheets(1).Range("A1").Value = "テスト"
wb.Save
wb.Close
End Sub
上記コードにて、下記の処理を行っております。
- エクセルファイル(ブック)を開く(コード3行目)
- A1セルに「テスト」と書き込む(コード5行目)
- エクセルファイル(ブック)を上書き保存
- エクセルファイル(ブック)を閉じる
「保存」と「閉じる」を忘れないようにしてください。

うまく動作しないときの対処法
エラーが発生する
コンパイルエラー・実行時エラー
コードに問題がある場合が多いです。
「”」や()など、2つセットの記号が片方だけになっていないかなど、コードを再確認しましょう。
セル名を「”」で囲っていない場合でもエラーが発生します。
また、今回の場合は「存在しないファイルパス」を指定した場合も実行時エラーが発生します。
コードとファイルパスを再確認しましょう。

警告表示

上記の表示が出た場合は、マクロが無効になっています。
エクセルに表示された「コンテンツの有効化」をクリックするか、下記記事を参考にセキュリティ設定を変更してください。
最後に
VBAでファイルを開く方法を解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!