■ 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.Path
は Excelファイルが保存されているパス を返します。
■ 3. アクティブブックのフォルダパスを取得(他ブック操作向け)
Sub アクティブブックのパス()
Dim path As String
path = ActiveWorkbook.Path & "\"
MsgBox "アクティブブックのフォルダ:" & path
End Sub
ThisWorkbook
とActiveWorkbook
の違いに注意:
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で一覧取得 | フォルダ内ファイル列挙 | 応用処理に必須 |