ExcelVBA ファイル操作の基準となるフォルダ現在ディレクトリ取得方法

 

ExcelVBA  ファイル操作を行う際の基準となるフォルダ。現在のディレクトリはChDir や CurDir を使うことで、取得・変更できます。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

2025年の目標は繰り返し作業に悩まされない年にしませんか? Excel VBAを活用した効率化がその第一歩
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事

 

Excel VBA  現在ディレクトリ取得方法|シーン

以下のシーンで利用します。

1.ファイルを開く・保存する際に、デフォルトのフォルダを設定する。

2.ユーザーが選択したフォルダを作業ディレクトリとして指定する。

3.一時的にディレクトリを変更し、処理後に元に戻す。

 

Excel VBA   現在ディレクトリ取得方法|サンプルコード

Excel VBAで効率化の準備をしてみませんか?2025年をよりスムーズに過ごすための資格
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事

現在のディレクトリを取得する (CurDir 関数)

Option Explicit

Sub GetCurrentDirectory() '標準モジュール
    MsgBox "現在のディレクトリ: " & CurDir
End Sub

現在のディレクトリを変更する (ChDir 文)

Option Explicit

Sub ChangeCurrentDirectory() '標準モジュール
    ChDir "C:\Users\Public\Documents"
    MsgBox "現在のディレクトリ: " & CurDir
End Sub

※ChDir はフォルダの変更のみ可能で、ドライブを変更する場合は ChDrive を併用する必要があります。

ドライブを変更する (ChDrive 文)

Option Explicit

Sub ChangeDriveAndDirectory() '標準モジュール
    ChDrive "C"  ' Cドライブに変更
    ChDir "C:\Users"
    MsgBox "現在のディレクトリ: " & CurDir
End Sub

一時的にディレクトリを変更し、元に戻す

Option Explicit

Sub TemporaryChangeDirectory() '標準モジュール
    Dim originalDir As String
    originalDir = CurDir  ' 現在のディレクトリを保存
    
    ChDir "C:\Users"  ' 一時的に変更
    MsgBox "変更後のディレクトリ: " & CurDir
    
    ChDir originalDir  ' 元に戻す
    MsgBox "元のディレクトリに戻しました: " & CurDir
End Sub
注意点

・ChDir はドライブをまたいでの変更はできない(ChDrive が必要)

・CurDir で取得したパスが C:\ の場合、ユーザー権限で実行するとアクセス制限があることがある

ThisWorkbook.Path を使えば、現在のブックがあるフォルダを取得できる(CurDir とは異なる)

Option Explicit

Sub ShowWorkbookPath() '標準モジュール
    MsgBox "このブックのフォルダ: " & ThisWorkbook.Path
End Sub

 

Excel VBA   現在ディレクトリ取得方法|まとめ

・CurDir で現在のディレクトリを取得

・ChDir でフォルダを変更(ドライブ変更は ChDrive も必要)

・ThisWorkbook.Path はブックのあるフォルダを取得するのに便利

・一時変更時は元に戻す処理を入れると安全

 

Excel VBAで自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。