みなさんこんにちは、現役エンジニアのサメハックです
未経験からWebエンジニアに転職し、
現在正社員として5年働いたのちフリーランスとして独立しました。
1分で理解できるVBA講座シリーズです。
今回はファイルを開く・閉じる方法について学んでいきましょう!
駆け出しエンジニアや未経験の方、
また新入社員を指導する先輩社員にとっても
わかりやすいように解説していきます!
この記事を読むと・・・
- 1分でファイルが開ける
- 1分でファイルが閉じられる
1分で理解できるVBA講座シリーズはじめっ!
初期設定
マクロを有効にする
Excelファイルを開き、
ファイル→オプション→トラストセンター→トラストセンターの設定→マクロの設定
という順に進み、
VBAが有効な場合にExcel4.0のマクロを有効にする
という項目にチェックを入れてください。
VBEの起動
Excelファイルを開いた状態でAlt+F11を押してVBEを開いてください
モジュールの作成
挿入→標準モジュール
という順に操作すると自動的にモジュールが開くので、ここにコードを記述します。
ファイルを開こう!
ファイルを開く構文
Workbooks.Open ファイルパス
VBAではファイルパスをフルパスで指定する必要があるけど
すべてベタ書きするのは現実的ではないので
カレントディレクトリを取得して、相対パスと結合させるよ!
すべてベタ書きするのは現実的ではないので
カレントディレクトリを取得して、相対パスと結合させるよ!
カレントディレクトリの取得
ThisWorkbook.Path
これでカレントディレクトリ、つまり
現在のファイルが存在するパスが取得出来るよ!
現在のファイルが存在するパスが取得出来るよ!
パスの生成
path = ThisWorkbook.Path & "¥フォルダ¥フォルダ¥ファイル名"
パスの生成は+で文字列を結合するのではなく、
&を使って結合します。
実際にファイルを開いてみよう!
このような構成のファイルを用意しました。
ファイルを開く_閉じる.xlsm
から
サンプルデータ.xlsx
を開くVBAマクロを動かしてみましょう。
Sub ファイルを開く()
'相対パス
relativePath = "\フォルダ1\サンプルデータ.xlsx"
'カレントディレクトリのパスと相対パスを結合
fullPath = ThisWorkbook.path & relativePath
'ファイルを開く
Workbooks.Open fullPath
End Sub
これを実行することで、ファイルを開くことが出来ました。
ポイントはパスの結合部分だよ!
ファイルを閉じよう!
ファイルを閉じる構文
Workbooks(ファイル名).Close
ファイル名に拡張子をつけるかどうかはPCの設定と合わせる必要があるよ!
開いているファイル名の取得
ActiveWorkbook.Name
これは現在使用中のExcelファイル(=ブック)の
ファイル名を取得するコマンドです。
直前に開いたファイルを閉じたい場合によく使われます。
この記法を使うと、ファイル名の拡張子を気にしなくて済むよ!
実際にファイルを閉じてみよう!
Sub ファイルを開く()
'相対パス
relativePath = "\フォルダ1\サンプルデータ.xlsx"
'カレントディレクトリのパスと相対パスを結合
fullPath = ThisWorkbook.path & relativePath
'ファイルを開く
Workbooks.Open fullPath
'開いているファイル名の取得
Filename = ActiveWorkbook.Name
'ファイルを閉じる
Workbooks(Filename).Close
End Sub
先程のファイルを開くマクロに
閉じる処理も追加してみました。
これをF8でデバックしながら実行すると
一度開いたファイルを閉じていることがわかります。
ファイル操作をマスターしてえらい!
まとめ
- ファイルを開く→ Workbooks.Open ファイルパス
- カレントディレクトリの取得→ ThisWorkbook.Path
- パスの結合には&を使う
- ファイルを閉じる→ Workbooks(ファイル名).Close
- アクティブなファイルの名前を取得→ ActiveWorkbook.Name
満足いただけたら、1クリックなのでSNSフォローしてもらえると嬉しいです🦈