目次
※本記事の「\」は半角の「¥」のことです。
Openメソッド
ブックを開くにはWorkbooksコレクションのOpenメソッドを使用します。Openメソッドにはたくさんの引数がありますが、この記事では開くブックを指定するFilenameのみ説明いたします。
Openメソッドの書式
Workbooks.Open Filename := "ブックのフルパス"
ブックがカレントフォルダにある場合は、Filenameにブック名だけ指定することもできます。
カレントフォルダのブックを開く場合
ファイル名の指定だけで開くことができます。
Sub sampleOpen() 'ファイル名だけの指定 Workbooks.Open Filename:="B.xlsx" End Sub
カレントフォルダとは、現在の作業対象になっているフォルダのことです。[別名で保存]ダイアログで表示されているフォルダがカレントフォルダになります。
カレントフォルダはあくまで現在、作業対象のフォルダであってマクロのブックと同じ階層という意味ではありません。
カレントフォルダの簡単な確認方法
VBE画面のイミディエイトウィンドウで「Debug.Print CurDir」と入力してEnterを押すとカレントフォルダを表示することができます。
※イミディエイトウィンドウはVBE画面から「Ctrl」+「G」のショートカットで表示することができます。
Debug.Print CurDir
カレントフォルダの注意点
カレントフォルダは意図しない操作で切り替わります。
例えば「名前を付けて保存」でカレントフォルダでないフォルダ(A)内に別のフォルダ(B)を作成した場合は、フォルダを作成したフォルダ(A)がカレントフォルダとなります。
画像の場合はsubフォルダがカレントフォルダになります。
ブック名だけで指定した場合、カレントフォルダが意図しない操作で切り替わる可能性があるので、開くブックを取得するコードを記載するか、フルパスで指定する方が安全かもしれません。
カレントフォルダ以外のブックを開く場合
Filenameにブックのフルパスを指定しています。
Sub sampleOpen() 'フルパスでのブックの指定 Workbooks.Open Filename:="C:\test\tmp\sub\C.xlsx" End Sub
ThisWorkbook.Pathを使ってブックを指定する場合
コードを書いたブックと同フォルダにオープンしたいブックがある場合は、以下のように記述することもできます。
Sub sampleOpen3() '--ThisWorkbook.Pathを使う方法 Workbooks.Open Filename:=ThisWorkbook.Path & "\B.xlsx" End Sub
ThisWorkbook.PathでVBAのコードが書かれたブックまでのパスを取得し、「& "\ブック名"」とすることで、同じフォルダの別ブックを指定しています。