VBA フォルダのパスの指定方法

■ 1. 固定のフォルダパスを指定する方法

もっともシンプルな方法は、文字列としてフォルダパスを指定する方法です。

Sub 固定パスの指定()
Dim folderPath As String
folderPath = "C:\Users\Public\Documents\MyFolder\"

MsgBox "フォルダパスは:" & folderPath
End Sub

※最後の \(バックスラッシュ)を忘れずに付けておくのがベストです。あとでファイル名と結合する際に困らないためです。


■ 2. 実行中ブックのフォルダパスを取得する方法

実行中のExcelファイルと同じフォルダを基準に処理したいときに使います。

Sub ブックのある場所のパス()
Dim folderPath As String
folderPath = ThisWorkbook.Path & "\"

MsgBox "このブックのフォルダ:" & folderPath
End Sub

ThisWorkbook.PathExcelファイルが保存されているパス を返します。


■ 3. アクティブブックのフォルダパスを取得(他ブック操作向け)

Sub アクティブブックのパス()
Dim path As String
path = ActiveWorkbook.Path & "\"

MsgBox "アクティブブックのフォルダ:" & path
End Sub

ThisWorkbookActiveWorkbook の違いに注意:

  • ThisWorkbook: コードが書かれたブック
  • ActiveWorkbook: 現在アクティブ(前面にある)なブック

■ 4. ユーザーにフォルダを選ばせる方法(FileDialog を使用)

vbコピーする編集するSub ユーザーにフォルダを選ばせる()
    Dim fd As FileDialog
    Dim folderPath As String
    
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    
    With fd
        .Title = "フォルダを選択してください"
        .AllowMultiSelect = False
        If .Show = -1 Then ' ユーザーが「OK」押下
            folderPath = .SelectedItems(1) & "\"
            MsgBox "選択されたフォルダ:" & folderPath
        Else
            MsgBox "キャンセルされました"
        End If
    End With
End Sub

この方法は 動的で汎用性が高く、業務アプリでよく使われる手法です。


■ 5. フォルダの存在確認を行う方法

Function フォルダ存在確認(path As String) As Boolean
フォルダ存在確認 = (Dir(path, vbDirectory) <> "")
End Function

Sub 使用例()
Dim path As String
path = "C:\TestFolder\"

If フォルダ存在確認(path) Then
MsgBox "フォルダは存在します"
Else
MsgBox "フォルダは存在しません"
End If
End Sub

■ 6. フォルダを作成する方法(存在しない場合)

Sub フォルダを作成する()
Dim path As String
path = "C:\TestFolder\"

If Dir(path, vbDirectory) = "" Then
MkDir path
MsgBox "フォルダを作成しました。"
Else
MsgBox "フォルダはすでに存在しています。"
End If
End Sub

■ 7. フォルダ内のファイル一覧を取得する方法(応用)

Sub フォルダ内のファイル取得()
Dim folderPath As String
folderPath = "C:\TestFolder\"

Dim fileName As String
fileName = Dir(folderPath & "*.*")

Do While fileName <> ""
Debug.Print fileName
fileName = Dir()
Loop
End Sub

■ まとめ

方法内容備考
① 固定パス文字列で直接指定初期処理やテスト用に便利
② ThisWorkbook.Path自ブックのパス取得マクロと一緒に使う設定など
③ ActiveWorkbook.Pathアクティブブックのパス他ブック操作に対応
④ FileDialogユーザー選択のインターフェース実用性が高い、対話式に最適
⑤ Dir関数+vbDirectory存在確認安全な処理を実現
⑥ MkDirフォルダ作成自動的な環境構築に便利
⑦ Dirで一覧取得フォルダ内ファイル列挙応用処理に必須
タイトルとURLをコピーしました