【EXCEL VBA】ネットワークパスを利用したい(UNCパス)

仕事で使うファイルは、ファイルサーバーに格納されていると思います。ファイルを開くときには、こんなネットワークパスでアクセスするのではないでしょうか?(\\server\share\organization\dept\rs-techdev\sample.xlmx)
VBAでChDir関数を利用してネットワークパスへ移動しようとしても正しく移動できません。今回はこの問題を解決する方法を紹介します。

WshShellクラスのCurrentDirectoryで解決する

一番簡単な方法は、WSHのWshShell:CurrentDirectoryを使うことです。CurrentDirectoryはプロパティなので、先ほどのネットワークパス(\\server\share\organization\dept\rs-techdev)を代入することで、パスを変更することができます。パスさえ変更できれば、あとはいつも通りにファイル操作が可能となります。

サンプルプログラムを動かすには参照設定が必要です。「Windows Script Host Object Model」を事前に選択しておいてください。

サンプルプログラム

Option Explicit

Sub sample()
    'Dim sh  As Object
    'Set sh = CreateObject("WScript.Shell")
 '参照設定なしで動かす場合はコメントを外す

    Dim sh As New IWshRuntimeLibrary.WshShell
    
    sh.CurrentDirectory = "\\server\share\organization\dept\rs-techde"
    Debug.Print sh.CurrentDirectory   '\\server\share\organization\dept\rs-techde
    Debug.Print CurDir                '\\server\share\organization\dept\rs-techde
    
    Application.GetOpenFilename       '初期表示フォルダがネットワークパス
    
End Sub