ファイル操作

【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

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。