ファイルを開く・閉じる方法
マクロをある程度使えるようになると、1つのファイルだけでなく、複数のファイルを操作する機会が増えます。
例えば、次のようなケースです。
・ファイルを開いて、そのファイルからデータを取得
・元のファイルからデータを取得し、特定のシートに反映した上で加工して利用
このようにファイルを開く、閉じる処理を利用します。
また、開いたファイルについては、保存するか、しないかも検討が必要です。
・開いたファイルを保存せずに閉じる
・開いたファイルを保存して閉じる
ファイルの開閉はVBAでよく使う機能なので、しっかりと覚えておきましょう。
1. ファイルを開く(Openメソッド)
VBAでファイルを開くには、「Workbooks.Open」 を使用します。
Workbooks.Open "ファイルパス"
ファイルパスは フルパス(Cドライブからのパス) を指定する必要があります。
パスの考え方
例えば、「ドキュメント」フォルダ内にある ファイル.xlsx
を開く場合、フルパスは次のようになります。
C:¥Users¥Username¥Documents¥ファイル.xlsx
これを先ほどのファイルを開く動作のVBAで記述すると、次のようになります。
Workbooks.Open "C:¥Users¥Username¥Documents¥ファイル.xlsx"
このように記載すると、ドキュメントフォルダ内にある「ファイル.xlsx」ファイルを開くことができます。
なぜ、フルパスで指定するかについては、パソコン内では同じファイル名のファイルを作成できるため、「どこにあるファイルなのか」を正確に指定する必要があるためです。
2. ファイルを開く応用(ThisWorkbook.Pathの活用)
毎回フルパスを記載するのは面倒なので、VBAでは 「ThisWorkbook.Path」 を活用することで、現在のマクロがあるフォルダ内のファイルを簡単に指定することができます。
例えば、マクロと同じフォルダ内に「格納」フォルダがあり、その中の A.xlsx
を開く場合は、次のように記述します。
Workbooks.Open ThisWorkbook.Path & "¥" & "A.xlsx"
ThisWorkbookとは、英語でThisは「これ」とか「この」で、WorkbookはそのままExcelのファイルのことですが、「このファイル」という意味です。
「.Path」と続くことで「このファイルのパス」となります。
ThisWorkbook.Path の役割
・現在開いているマクロがあるフォルダのパスを取得する
例えば、現在のマクロが 「C:¥Users¥Username¥Documents」 にある場合、上記コードは次のパスを指定することと同じ意味になります。
C:¥Users¥Username¥Documents¥A.xlsx
ThisWorkbook.Path & "¥" & "A.xlsx"
3. ファイルを閉じる(Closeメソッド)
VBAでは、開いているファイルを閉じる際に、「Workbooks(ファイル名).Close」 を使用します。
Workbooks("ファイル名").Close
すでに開いているファイルであれば、ファイル名を指定するだけで閉じられます。
例
Workbooks("A.xlsx").Close
先ほどの開くとは違い、なぜファイル名だけで閉じることができるかというと、あなたも経験があると思いますが、別フォルダにある「同じ名前のファイル」は同時に開くことができないからです。
そのため、「A.xlsx」ファイルと指定した場合には、一つのファイルしか該当するものがない、ということです。
また、指定するときの注意点ですが、フォルダの設定に依存する部分があり、ファイル名には 拡張子(.xlsx など)と呼ばれるファイルの種類を識別する文字が付いています。
マクロファイルでは「xlsm」というのが拡張子で、普段のExcelでは「xlsx」が拡張子になります。
この表示が「表示」か「非表示」かによって指定方法が「拡張子あり」か「拡張子なし」かが変わりますので、注意をしてください。
まとめ
まとめると、VBAでファイルを開く・閉じる方法は次の通りです。
操作 | コード例 | 説明 |
---|---|---|
ファイルを開く | Workbooks.Open "ファイルパス" | 指定したファイルを開く |
ThisWorkbook.Path を使う | Workbooks.Open ThisWorkbook.Path & "¥A.xlsx" | マクロと同じフォルダのファイルを開く |
ファイルを閉じる | Workbooks("ファイル名").Close | すでに開いているファイルを閉じる |
・開くとき → ファイルの場所を正確に指定しないと開けない
・閉じるとき → すでに開いているファイルならファイル名だけで閉じられる
VBAで複数のファイルを操作する際に、ファイルの開閉は必ず必要になる処理です。
基本の使い方をしっかりマスターして、業務効率を向上させましょう!
コメント