VBAでファイルを開いたり保存したりするとき、必ず登場するのが「パス(Path)」という概念です。ファイルのパスとは、そのファイルがコンピュータのどこにあるかを示す住所のようなものです。
この記事では、パスの読み方・書き方の基本から、変数を使ったパスの管理方法、繰り返し処理との組み合わせまでを解説します。
ファイルのパスとは何か?
パスはフォルダの階層を ¥ でつないで表現します。たとえばドキュメントフォルダ内のExcelファイルのパスは次のようになります。
C:¥Users¥Username¥Documents¥ファイル.xlsx
左から順に「Cドライブ → Usersフォルダ → ユーザーフォルダ → Documentsフォルダ → ファイル.xlsx」という階層構造です。¥ が出てくるたびに1段階フォルダの中に入ったとイメージすると理解しやすいです。
VBAでは省略せずにこのようなフルパスで指定する必要があります。パスが間違っていると「ファイルが見つからない」エラーになります。
パスを変数に入れて使い回すには?
同じフォルダ内の複数ファイルを操作する場合、共通部分のパスを変数に入れておくとコードが短くなり修正も楽になります。
Dim f_path As String
f_path = "C:¥Users¥Username¥Documents¥"
' 1月フォルダの請求書を開く
Workbooks.Open f_path & "1月¥請求書.xlsx"
' 2月フォルダの請求書を開く
Workbooks.Open f_path & "2月¥請求書.xlsx"
共通部分を変数 f_path に入れておけば、フォルダ名だけを変えればどのファイルでも指定できます。保存先のパスが変わっても、変数の定義1か所を直すだけで済みます。
繰り返し処理と組み合わせてパスを自動生成するには?
フォルダ名が「1月」「2月」…と連番になっている場合は、For〜Next と組み合わせると12か月分を一気に処理できます。
Dim f_path As String
Dim i As Integer
f_path = "C:¥Users¥Username¥Documents¥"
For i = 1 To 12
Workbooks.Open f_path & i & "月¥請求書.xlsx"
Next i
変数 i が1〜12と変化するたびに「1月¥請求書.xlsx」「2月¥請求書.xlsx」…と自動的にパスが生成され、12か月分のファイルを順番に開きます。
まとめ
- パスはファイルの住所。
¥で区切られた階層構造で表現される - VBAではフルパス(省略なし)で指定する必要がある
- 共通部分のパスを変数に入れるとコードが短くなり修正も簡単になる
For〜Nextと組み合わせると連番フォルダのパスを自動生成できる- エクスプローラーのアドレスバーをクリックすると現在のフォルダのフルパスをコピーできる
よくある質問
パスに日本語(フォルダ名・ファイル名)は使えますか?
使えます。ただし環境によっては文字化けやエラーが起きる場合があります。特に共有フォルダやサーバーパスで問題が出やすいため、英数字のパスにできる場合はその方が安全です。
自分のユーザー名が変わるとパスが使えなくなりますか?
なります。ユーザー名が含まれるパスはPCが変わると動かなくなります。Environ("USERPROFILE") を使うと現在のユーザーのパスを動的に取得できるため、可搬性が高いコードになります。
ブックと同じフォルダのパスを取得するには?
ThisWorkbook.Path でマクロが入っているブックのフォルダパスを取得できます。ファイルを同じフォルダに集めておけば、パスをハードコードせずに済みます。
パスにスペースが含まれていてもいいですか?
VBAのコード上は問題ありません。ただし一部の処理でスペースが原因でエラーになることがあります。フォルダ名・ファイル名にスペースを使わないようにしておくのが安全です。
フォルダが存在するかどうかを事前に確認できますか?
できます。Dir(フォルダパス, vbDirectory) <> "" でフォルダの存在確認ができます。存在しない場合に MkDir でフォルダを作成してから処理するパターンがよく使われます。
動画で学びたい方へ
「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。
VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。



