ネットワークドライブにChDriveする


VBAでカレントフォルダを移動するにはChDirステートメントを使います。カレントドライブの移動ならChDriveステートメントです。詳しくは「VBAでファイルの操作」をご覧ください。

ただし、このChDriveステートメントは、ドライブ文字を割り当てていないネットワークドライブに、カレントドライブを変更することはできません。ChDirやChDriveは、MS-DOS時代からある超古典的なコマンドですからね。その当時は、ネットワークドライブなんて一般的ではなかったのかもしれません。

「\\マシン名\ドライブ名\フォルダ名」のように、ドライブ文字を割り当てていないネットワークドライブにカレントドライブを移動するには、WindowsのAPIか、WSH(Windows Scripting Host)を使います。

【APIを使うやり方】

Declare Function SetCurrentDirectory Lib "kernel32" Alias _
                            "SetCurrentDirectoryA" (ByVal CurrentDir As String) As Long
Sub Sample1()
    SetCurrentDirectory "\\NotePC\E\Work\"
    MsgBox CurDir
End Sub

「\\NotePC\E\Work\」は、NotePCというコンピュータの、Eドライブの、Workフォルダという意味です。

【WSHを使うやり方】
Sub Sample2()
    With CreateObject("WScript.Shell")
        .CurrentDirectory = "\\EPSON\E\Develop\"
    End With
    MsgBox CurDir
End Sub

結果は同じです。