
Excel VBA カレントディレクトリは、現在の作業ディレクトリ(フォルダ)のことを指します。ExcelVBAでファイルの操作を行う際に、現在のディレクトリを取得したり変更したりするために使用されます。具体的な使い方や、注意点やサンプルコードを紹介します。
📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!
👇実務で“そのまま使える”テンプレ付きで、コピペするだけ!
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き
CurDir関数とは?Excel VBAでカレントディレクトリを使う場面
以下のようなシーンで利用されます。
・ファイルを開いたり保存したりする際に、現在の作業ディレクトリを確認する
・複数のファイルを一括処理するために、特定のディレクトリに移動する
・作業ディレクトリを一時的に変更し、操作が終わったら元に戻す
CurDir関数の構文と使い方|基本・引数・注意点
CurDirを使うメリット
・ファイル操作のミスを防ぐ
意図しないフォルダで処理を行うリスクを軽減できます。
・動的なファイルパス管理が可能
カレントディレクトリを取得し、コードの汎用性を高められます。
構文と引数
Dim path As String
path = CurDir
・CurDir関数にはオプション引数としてドライブ指定が可能です。
Dim path As String
・path = CurDir("C") ' Cドライブのカレントディレクトリを取得
簡単なコード例
- Sub GetCurrentDirectory()
- MsgBox "現在のカレントディレクトリ: " & CurDir
- End Sub
- Option Explicit
- Sub GetSpecificDrive()
- MsgBox "Cドライブのカレントディレクトリ: " & CurDir("C")
- End Sub
ChDir関数との組み合わせによるディレクトリ操作
- Option Explicit
- Sub ChangeDirectory()
- ChDir "C:\Users\User\Desktop"
- MsgBox "変更後のカレントディレクトリ: " & CurDir
- End Sub
自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。
よくある注意点
存在しないディレクトリを指定した場合の挙動
CurDirは存在しないフォルダを指定するとエラーになります。エラーハンドリングを行うことで、プログラムの強度を向上させることができます。
- Option Explicit
- Sub CheckDirectory()
- On Error Resume Next
- MsgBox CurDir("Z") ' 存在しないZドライブを指定
- If Err.Number <> 0 Then
- MsgBox "エラー発生: " & Err.Description
- End If
- On Error GoTo 0
- End Sub
異なるユーザーが同じVBAコードを使用する場合、カレントディレクトリが異なる可能性があるため、適宜設定を確認する必要があります。
・ディレクトリパスを変更する際には、存在するディレクトリかどうかを確認する必要があります。
・カレントディレクトリが変更されると、ファイル操作に影響を与えることがありますので注意が必要です。
【サンプルコード】カレントディレクトリを取得・変更する実践例
現在のディレクトリを取得する
- Option Explicit
- Sub GetCurrentDirectory()
- ' カレントディレクトリを取得して表示
- Dim currentDir As String
- currentDir = CurDir
- MsgBox "現在のカレントディレクトリは: " & currentDir
- End Sub
自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。
ディレクトリを別の場所に変更する
- Option Explicit
- Sub ChangeCurrentDirectory()
- ' 新しいディレクトリに変更
- Dim newDir As String
- newDir = "C:\ExampleDirectory"
- ' ディレクトリが存在するか確認
- If Dir(newDir, vbDirectory) <> "" Then
- ChDir newDir
- MsgBox "カレントディレクトリが " & newDir & " に変更されました"
- Else
- MsgBox "ディレクトリが存在しません"
- End If
- End Sub
元に戻すコード
- Option Explicit
- Sub ChangeAndRevertCurrentDirectory()
- ' 現在のディレクトリを取得
- Dim originalDir As String
- originalDir = CurDir
- ' 新しいディレクトリに変更
- Dim newDir As String
- newDir = "C:\ExampleDirectory"
- If Dir(newDir, vbDirectory) <> "" Then
- ChDir newDir
- MsgBox "カレントディレクトリが " & newDir & " に変更されました"
- ' 作業終了後に元のディレクトリに戻す
- ChDir originalDir
- MsgBox "カレントディレクトリが元に戻されました: " & originalDir
- Else
- MsgBox "ディレクトリが存在しません"
- End If
- End Sub
応用:複数ファイル処理・バックアップ処理に応用
複数ファイルの一括処理
- Option Explicit
- Sub ProcessFiles()
- Dim fso As Object, folderPath As String, file As Object
- Set fso = CreateObject("Scripting.FileSystemObject")
- folderPath = CurDir
- For Each file In fso.GetFolder(folderPath).Files
- Debug.Print file.Name
- Next file
- End Sub
自動バックアップの実装
- Option Explicit
- Sub BackupFile()
- Dim fso As Object
- Set fso = CreateObject("Scripting.FileSystemObject")
- fso.CopyFile CurDir & "\外部ファイル-1.xlsx", CurDir & "\backup\外部ファイル-1.xlsx"
- MsgBox "バックアップ完了"
- End Sub
Dirでパスが見つからないエラーが出た時の対処
- Option Explicit
- Sub CheckFolderExists()
- Dim fso As Object
- Set fso = CreateObject("Scripting.FileSystemObject")
- If fso.FolderExists("C:\Users\User\Desktop\新しいフォルダー") Then
- MsgBox "フォルダが存在します"
- Else
- MsgBox "フォルダが見つかりません"
- End If
- End Sub
セキュリティ設定によっては、特定のディレクトリにアクセスできない場合があります。このような場合、管理者権限で実行するか、アクセス権を確認してください。
カレントディレクトリは、ファイル操作を行う際に重要な概念です。ExcelVBAでの作業を効率化するために、現在のディレクトリを取得したり変更したりする方法を理解しておくことは非常に役立ちます。初心者でも簡単に扱えるように、基本的な使い方をマスターしておきましょう。
CurDir関数の利用は、業務効率化に大きく貢献します。
「Excel VBAで自動化するコードのベースが習得できる解説書」
Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。
