【VBA】現在(カレント)のフォルダの取得と変更方法
更新日:2024/01/18
今回は、VBAでカレントフォルダを確認する方法と設定変更する方法を紹介します。
カレントフォルダを確認する方法
カレントフォルダを確認する方法は二つあります。
どちらも同じ結果を得ることができます。
通常は一つめのCurDir関数を使用します。
二つめのFileSystemObjectは、参考として紹介します。
CurDir関数で確認
CurDir関数は、ドライブを含めた現在のフォルダ(パス)を返します。
Sub CurDirTest()
Debug.Print "【現在のフォルダ】" & CurDir
End Sub
実行すると、イミディエイトウィンドウに現在のフォルダが表示されます。
【現在のフォルダ】C:\Users\xxx\Documents
FileSystemObjectで確認
FileSystemObjectオブジェクトのGetAbsolutePathNameメソッドに、"."を渡すことで現在のフォルダ(パス)を取得できます。
GetAbsolutePathNameメソッドは、引数で渡されたパスを絶対パスに変換します。
引数が相対パスのときは、現在のパスと連結後に対パスに変換されます。
そのため"."を指定すると、現在のパスを取得できます。
Sub GetAbsolutePathNamerTest()
Dim currentPath As String
currentPath = CreateObject("Scripting.FileSystemObject") _
.GetAbsolutePathName(".")
Debug.Print "【現在のフォルダ】" & CurDir
End Sub
実行すると、イミディエイトウィンドウに現在のフォルダが表示されます。
【現在のフォルダ】C:\Users\xxx\Documents
カレントフォルダを変更する方法
カレントフォルダを変更は、ChDirステートメントで行います。
次のコードはカレントフォルダを変更後に、カレントフォルダを表示しています。
Sub ChDirTest(path)
ChDir path
Debug.Print "【現在のパス】" & CurDir
End Sub
ChDirは相対パスを指定できます。
次のコードは相対パスでカレントフォルダを変更後に、元のフォルダに戻しています。
Sub test()
Dim current As String
current = CurDir
ChDirTest "."
ChDirTest ".."
ChDirTest current
End Sub
次のような結果になります。
【現在のパス】C:\Users\xxx\Documents 【現在のパス】C:\Users\xxx 【現在のパス】C:\Users\xxx\Documents
なお、パスにドライブが含まれているとドライブのカレントフォルダを変更します。
現在のドライブは変更されないので注意が必要です。
ドライブを変更は、ChDriveで行います。
Sub test2()
Debug.Print "【現在のフォルダ】" & CurDir
ChDir "D:\work"
Debug.Print "【現在のフォルダ】" & CurDir
ChDrive "d"
Debug.Print "【現在のフォルダ】" & CurDir
End Sub
次のような結果になります。
【現在のフォルダ】C:\Users\xxx\Documents 【現在のフォルダ】C:\Users\xxx\Documents 【現在のフォルダ】D:\work
更新日:2024/01/18
関連記事
スポンサーリンク
記事の内容について
こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。