【VBA】カレントドライブ名の取得と変更するコード
更新日:2024/01/18
VBAでカレントドライブの文字列を取得する方法とコードを紹介します。
カレントドライブ名を取得する方法
VBAはカレントフォルダを取得する関数があるのでカレントドライブを取得する関数もありそうですが、残念ながら用意されていません。
そのため、自分で関数を作成する必要があります。
今回は、次の二つの方法を紹介します。
CurDir関数の方が簡潔なコードになります。
FileSystemObjectオブジェクトを他の目的で利用している時でなければ、CurDir関数を使用した方が良さそうです。
CurDir関数からカレントドライブ名を取得
CurDir関数を実行するとカレントフォルダのパスを返すので、ドライブを抜き出します。
Function CurDrive() As String
CurDrive = Split(CurDir, ":")(0)
End Function
":"で分割して、最初の要素を返すだけです。
作成した関数の確認のために、次のコードを実行してみます。
Sub CurDriveTest()
Debug.Print CurDrive()
ChDrive ("d")
Debug.Print CurDrive()
End Sub
イミディエイトウィンドウに、次のように表示されます。
ただし、Dドライブが存在しないときは、エラーになります。
C D
FileSystemObjectからカレントドライブ名を取得
FileSystemObjectオブジェクトのGetAbsolutePathNameメソッドは相対パスを絶対パスに変換してくれます。
そこで相対パスに"."を指定することで、カレントフォルダを取得できます。
取得した結果から、ドライブを抜き出します。
Function CurDriveFSO() As String
Dim current As String
current = CreateObject("Scripting.FileSystemObject") _
.GetAbsolutePathName(".")
CurDriveFSO = Split(current, ":")(0)
End Function
前項のCurDirがGetAbsolutePathNameメソッドに置き換わっただけですね。
作成した関数の確認のために、次のコードを実行してみます。
Sub CurDriveTest()
Debug.Print CurDriveFSO()
ChDrive ("d")
Debug.Print CurDriveFSO()
End Sub
結果は、前項のCurDirと同じです。
C D
カレントドライブを変更する方法
カレントドライブの変更は、ChDriveステートメントで行います。
次のコードは、現在のパスを表示後にDドライブに変更して、再度現在のパスを表示しています。
Sub ChDriveTest()
Debug.Print "【変更前】" & CurDrive
ChDrive ("d")
Debug.Print "【変更後】" & CurDrive
End Sub
コード中のCurDriveは、このページのCurDir関数からカレントドライブ名を取得で紹介した関数です。
変更前のドライブがCのとき、コードの実行結果は次のようになります。
【変更前】C 【変更後】D
更新日:2024/01/18
関連記事
スポンサーリンク
記事の内容について
こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。