Dir関数でファイルがないってときに、
ただファイルがないのか、ネットワークにつながってないのかわかんないの?
Ping飛ばしてネットワークにつながってるのか調べたらいいじゃない?
みたいな要件があって、まぁ、正直、「そこまでやるか?」って思ったけど、そういう環境で動いている人は、そういう発想になるんだろうなぁ・・・と思って、教えてもらったPing送信術をアレンジしてExcelに埋め込んでみた。
Public Function CheckNetwork(ip As String) As Boolean Dim wsh As Object Dim buf As String On Error GoTo ErrCheck Set wsh = CreateObject("WScript.Shell") wsh.Run "%ComSpec% /c ping -n 1 " & ip & " | clip ", 0, True buf = GetObject("\" _ , "htmlfile").ParentWindow.ClipboardData.GetData("text") If InStr(buf, "ラウンド トリップの概算時間") > 0 Then CheckNetwork = True End If Exit Function ErrCheck: err.clear End Function
ちなみに、「%ComSpec%」は、「%SystemRoot%\system32\cmd.exe」のことらしい。
「 | clip」でクリップボードに入れて、それをbufに読み込むようにした。
また、Shellは、Execで動かす方法とRunで動かす方法があるが、Runのほうが、コマンドの窓が表示されないようにできるので、こちらを採用。
面倒な要件は、解決できると嬉しい。
解決しないと、逆恨みしそうだけど。