ChDriveステートメント
ChDriveステートメントはカレントドライブの変更を行います。存在しないドライブを指定するとエラーになります。
残念ながら、ネットワークドライブへの変更はできません。
ネットワークドライブへ変更したい場合は「VBAでネットワークドライブにカレントを変更する」をご参照ください。
ChDirステートメント
ChDirステートメントはカレントフォルダの変更を行います。
カレントフォルダとは現在作業中のフォルダを指し、ダイアログボックスの初期表示フォルダになります。
存在しないフォルダをカレントフォルダに変更しようとした場合はエラーになります。エラーを回避したい場合は事前にフォルダが存在するかチェックを行ってください。「VBAでフォルダ存在チェック」にてフォルダ存在チェックを紹介しています。
カレントドライブとは異なるドライブのフォルダへの変更を行う場合は、先にChDriveステートメントでカレントドライブを変更しておく必要があります。
構文
ChDriveの構文
ChDrive Drive
Drive
変更後のドライブ名を指定します。2文字以上が指定された場合は先頭の1文字をドライブ名として判定して処理されます。
ChDirの構文
ChDir Path
Path
変更後のカレントフォルダのパスを指定します。ドライブ名を省略した場合はカレントドライブの中にある指定したパスが対象になります。フォルダ名のみを指定した場合はカレントフォルダ内にあるフォルダが対象になります。
ChDriveとChDirは一緒に使った方がよい
ChDriveステートメントとChDirステートメントは一緒にセットとして使うようにした方がよいです。
理由は2つあります。
1つは、ChDirステートメントがドライブの変更が出来ないこと、もう1つがChDriveステートメントの引数にフォルダパスを渡してもエラーにならずにドライブ部分のみを解釈して処理してくれることです。
この特性から、ChDriveステートメントとChDirステートメントはセットにしておいた方が使い勝手がよいでしょう。
カレントドライブとフォルダの変更を行う関数
カレントドライブとフォルダの変更を何度も行う場合は、以下のように関数化しておいてもよいです。
単にChDriveステートメントとChDirステートメントを並べているだけですが、ドライブが変わったことを意識しなくてよい利点があります。
1 2 3 4 5 6 7 |
Sub ChDriveDir(sPath As String) '// カレントドライブを変更 Call ChDrive(Drive:=sPath) '// カレントフォルダを変更 Call ChDir(Path:=sPath) End Sub |
サンプルコード
開いているブックがあるフォルダをカレントフォルダとして設定後に、フォルダ選択ダイアログを表示するサンプルです。
ブックがあるフォルダはActiveWorkbook.Pathで取得します。ここをChDriveステートメントとChDirステートメントでカレントフォルダとしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
Sub ChDirTest() Dim fd As FileDialog Dim ret Dim buf Dim sPath '// アクティブブックのパスを取得 sPath = ActiveWorkbook.Path '// カレントドライブをアクティブブックがあるドライブに変更 Call ChDrive(Drive:=sPath) '// カレントフォルダをアクティブブックがあるフォルダに変更 Call ChDir(Path:=sPath) '// フォルダを選択ダイアログを設定 Set fd = Application.FileDialog(msoFileDialogFolderPicker) '// ダイアログを開く ret = fd.Show '// キャンセルボタンまたは×ボタンの場合 If ret = 0 Then '// キャンセル時は処理を抜ける Exit Sub End If End Sub |