VBAのChDriveで作業ドライブを変更する方法をわかりやすく解説

スポンサーリンク
スポンサーリンク

ChDriveの概要

作業ドライブを変更する VBAの予約語

ChDrive

概要 ChDrive ステートメントは、VBAで作業ドライブ(カレントドライブ)を変更するために使用されます。ファイルを開く・保存する際に特定のドライブを基準にする場合に便利です。

わかりやすく説明 ファイル操作の基準となるドライブを変更する命令。

  • 現在の作業ドライブを変更する。
  • ファイルの読み書きを特定のドライブに限定する際に便利。
  • Excel VBAでファイル操作の基準ドライブを指定する場合に使用される。

ChDriveの基本的な使い方

以下の例では、作業ドライブを変更します。

Sub ChangeDrive()
    ChDrive "D"
    MsgBox "作業ドライブを D: に変更しました"
End Sub

解説:

  • ChDrive "D": 作業ドライブをDドライブに変更。
  • その後に開く・保存するファイルは、Dドライブを基準に処理される。

現在の作業ドライブを取得する

現在の作業ドライブを確認したい場合は、CurDir 関数を使用します。

Sub ShowCurrentDrive()
    MsgBox "現在の作業ドライブ: " & Left(CurDir, 2)
End Sub

解説:

  • CurDir 関数を使うと、現在の作業ディレクトリを取得できる。
  • Left(CurDir, 2) を使用すると、ドライブ部分(例: “C:”) だけを取得できる。

Excel VBAでのChDriveの活用

Excel VBAでファイルを開く前に、作業ドライブを変更すると便利です。

Sub OpenFileInDrive()
    ChDrive "E"
    Workbooks.Open "E:\Data\report.xlsx"
End Sub

解説:

  • 作業ドライブを E: に変更。
  • Workbooks.Open を使用して、Eドライブ内のファイルを開く。

ChDriveとChDirを組み合わせる

ChDrive はドライブのみを変更し、フォルダを変更するには ChDir を併用します。

Sub ChangeDriveAndFolder()
    ChDrive "D"
    ChDir "D:\Projects"
    MsgBox "D:\Projects に移動しました"
End Sub

解説:

  • ChDrive "D": 作業ドライブをDに変更。
  • ChDir "D:\Projects": Dドライブ内の作業フォルダを変更。

ChDriveを使ったファイル保存の自動化

ChDrive を利用すると、Excelのファイル保存を指定ドライブに統一できます。

Sub SaveWorkbookInSpecificDrive()
    ChDrive "E"
    ActiveWorkbook.SaveAs Filename:="E:\Reports\Summary.xlsx"
    MsgBox "ファイルをEドライブに保存しました"
End Sub

解説:

  • 作業ドライブを変更し、指定のパスにファイルを保存。
  • 毎回フルパスを指定しなくても、特定のドライブに統一して保存できる。

注意点

  • 存在しないドライブを指定するとエラー: 指定するドライブが存在しないと実行時エラーになる。
  • 作業ドライブの変更は一時的: Excelを閉じると元のドライブに戻る。
  • フォルダの変更にはChDirを併用: ChDrive はフォルダの変更はできないため、ChDir を併用する必要がある。

よくある質問

Q: ChDrive を使うと何が変わりますか?
A: 作業ドライブを変更でき、ファイルの読み書きをそのドライブに統一できます。
Q: ChDrive は Excel を閉じた後も影響しますか?
A: いいえ、Excelを閉じると、作業ドライブは元に戻ります。
Q: ChDrive を使わずに特定のドライブのファイルを開く方法は?
A: Workbooks.Open "E:\Data\file.xlsx" のように、フルパスを指定すればChDriveを使わなくても開けます。

まとめ

  • ChDrive は現在の作業ドライブを変更する。
  • Excel VBAでファイルを開く・保存する際に、特定のドライブを基準にするのに便利。
  • 現在の作業ドライブを取得するには CurDir を使う。
  • フォルダを変更する場合は ChDir を併用する必要がある。