VBAには、CurDirというExcelアプリケーションの現在の作業フォルダ(カレントフォルダ)を取得する関数があります。それと対になる形で、このカレントフォルダをプログラムで変更するための命令も用意されています。
それがChDir(Change Directory)とChDrive(Change Drive)です。この記事では、これらの使い方と、カレントフォルダを扱う上での重要な注意点を解説します。
1. 同じドライブ内でフォルダを変更する (ChDir)
現在アクティブなドライブ(例: Cドライブ)の中で、カレントフォルダを別のフォルダに変更する場合は、ChDirステートメントを使います。
コードと解説
Sub ChangeCurrentDirectory_SameDrive()
Dim newFolderPath As String
' 例として、Cドライブの"Work"フォルダに変更
newFolderPath = "C:\Work"
' フォルダが存在するかを確認
If Dir(newFolderPath, vbDirectory) = "" Then
MsgBox "指定されたフォルダは存在しません。", vbExclamation
Exit Sub
End If
'--- カレントフォルダを変更 ---
ChDir newFolderPath
'--- 変更されたことを確認 ---
MsgBox "カレントフォルダを以下に変更しました:" & vbCrLf & CurDir
End Sub
ChDir "フォルダパス": 指定したフォルダパスにカレントフォルダを変更します。- 注意点: この命令は、ドライブをまたいでは移動できません。例えば、現在のカレントフォルダがCドライブにある状態で、
ChDir "D:\Data"を実行しようとしても、カレントフォルダは変更されず、エラーが発生します。
2. 別のドライブのフォルダに変更する (ChDrive + ChDir)
カレントフォルダを別のドライブ(例: CドライブからDドライブ)にあるフォルダに変更したい場合は、2段階のステップが必要です。
コードと解説
Sub ChangeCurrentDirectory_DifferentDrive()
Dim newFolderPath As String
' 例として、Dドライブの"Data"フォルダに変更
newFolderPath = "D:\Data"
' フォルダが存在するかを確認
If Dir(newFolderPath, vbDirectory) = "" Then
MsgBox "指定されたフォルダは存在しません。", vbExclamation
Exit Sub
End If
'--- ステップ1: カレントドライブを変更 ---
ChDrive newFolderPath
'--- ステップ2: カレントフォルダを変更 ---
ChDir newFolderPath
'--- 変更されたことを確認 ---
MsgBox "カレントフォルダを以下に変更しました:" & vbCrLf & CurDir
End Sub
ChDrive newFolderPath: まず、ChDriveステートメントでカレントドライブを変更します。引数にはフルパスを指定できますが、実際に使われるのはドライブ文字の部分だけです。ChDir newFolderPath: カレントドライブが目的のドライブに切り替わった後で、ChDirを使い、そのドライブ内の目的のフォルダにカレントフォルダを変更します。
【最重要】それでもカレントフォルダに依存すべきではない理由
前回の記事でも触れましたが、ChDirでカレントフォルダを意図通りに変更したとしても、それは一時的な状態に過ぎません。
マクロの実行中に、ユーザーが「ファイルを開く」ダイアログで別のフォルダを閲覧しただけで、カレントフォルダは簡単に変わってしまいます。
そのため、ファイルを保存したり読み込んだりする際には、CurDirを基準にするのではなく、 ThisWorkbook.Path(マクロが保存されているブックのフォルダ) のように、信頼できる絶対的なパスを基準に、完全なファイルパスを組み立てることを常に強くお勧めします。
ChDirやChDriveは、特定の古いアプリケーションとの連携など、どうしてもカレントフォルダ自体の変更が必要な、限定的な場面でのみ使用するようにしましょう。
まとめ
- 同じドライブ内でのフォルダ移動:
ChDir "パス" - 異なるドライブへのフォルダ移動:
ChDrive "パス"とChDir "パス"の2段階
カレントフォルダは変更可能ですが、非常に変わりやすく不安定なため、通常のファイル操作の基準として依存するのは避けるべきです。ファイルのパスは、常にThisWorkbook.Pathなどから正確に指定するのが、堅牢なVBAマクロを作成するための基本です。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
