Excel VBAの「CurDir 関数」について解説します。
CurDir 関数とは
Excel VBA の CurDir 関数は、指定したドライブの現在のパスを返します。ドライブを指定しない場合は、カレントドライブのフォルダ(現在作業中のドライブのフォルダ)のパスが返ります。
CurDir 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。
CurDir 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
CurDir[(drive)]
引数
引数 | 説明 |
---|---|
drive | 【省略可能】ドライブ文字を指定します ※ 省略時は、カレント(現在の)ドライブです |
戻り値
戻り値 | 説明 |
---|---|
パスを表す文字列 (String) | 現在のフォルダのパスを表す文字列が返ります |
※ drive が指定されていないか、長さが 0 の文字列 (“”) の場合は、カレントドライブのパスを返します。
※ 「現在のフォルダ」とは、カレントドライブなら作業中のフォルダです。
※ カレントドライブ以外の「現在のフォルダ」は、最後にそのドライブがカレントドライブになっていたときに設定されたフォルダです。ドライブごとに独立して管理記憶されています。
解説(使用例)
CurDir 関数の使い方をサンプルで確認していきましょう。
CurDir 関数サンプル (基本的な使用例)
「現在のフォルダ」のパスを表示する基本的な例を紹介します。
カレントドライブのフォルダパス取得例
drive を指定しないか、長さが 0 の文字列 (“”) の場合はカレントドライブのパスを返す例です。
'■CurDir関数使用例1(カレントドライブのパス取得例)
Sub CurDir_Sample01()
Dim curPath As String
' 現在のフォルダを取得(引数を指定しない)
curPath = CurDir() ' () は無くてもOK
' 結果を表示
MsgBox "現在のフォルダパスは" & vbCrLf & curPath
End Sub
実行結果の MsgBox 画像です。
drive に特定のドライブ文字を指定した場合は、指定したドライブの現在のフォルダパスを取得して返します。
指定したドライブのフォルダパス取得例
InputBox を使ってドライブ文字を指定できるようにした例です。入力内容によってはエラーが発生する可能性があるので、エラーハンドリングを設定しています。
'■CurDir関数使用例2(指定したドライブのパス取得例)
Sub CurDir_Sample02()
Dim curDrive As String
Dim curPath As String
' ドライブ名をインプットボックスで指定する
curDrive = InputBox("ドライブ名を入力してください" & _
vbCrLf & "(未指定の場合はカレントドライブです)")
On Error GoTo ErrorHandler
' 指定ドライブの現在のフォルダパスを取得
curPath = CurDir(curDrive)
' 結果を表示
MsgBox "指定ドライブの現在のフォルダパスは" & vbCrLf & curPath
Exit Sub
ErrorHandler:
MsgBox "エラー番号:" & Err.Number & " " & Err.Description & _
vbCrLf & curDrive & "ドライブは存在しないか、アクセスできません。", _
vbExclamation
End Sub
実行時に表示される InputBox がこちらです。「D」を入力しています。
取得後に表示された MsgBox 画像です。
入力されたドライブ文字が存在しなかった場合に表示された画像がこちらです。
エラーハンドリングできていることが確認できました。
おわりに
VBAの関数一覧はこちらからご参照ください。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
Excel VBA の CruDir 関数は、現在のフォルダ(作業フォルダ)のパスを取得するための関数です。
VBAでファイル操作を行う際に非常に便利な関数です。例えば、一時的に作業フォルダを変更してファイル処理を行うような場合などに利用します。CruDir 関数で元のフォルダを変数に取得しておけば、処理完了後に元のフォルダに簡単に戻すことができます。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;