有沒有辦法檢查vba中的網絡連接?使用vba檢查網絡連接
我使用這個命令:
If Dir("O:\") = "" Then
MsgBox "you have network connection"
Else
MsgBox "No Connection"
End If
但它不工作,我得到一個運行時錯誤
有沒有辦法檢查vba中的網絡連接?使用vba檢查網絡連接
我使用這個命令:
If Dir("O:\") = "" Then
MsgBox "you have network connection"
Else
MsgBox "No Connection"
End If
但它不工作,我得到一個運行時錯誤
你在做什麼幾乎是正確的,如果和其他零件,除了翻轉,
即當Dir("O:\") = ""
= 你沒有連接
,當它返回的東西意味着你有一個連接。
Dir函數用於返回指定目錄中的第一個文件名和屬性列表。
Sub Test_Connection()
If (Len(Dir("O:\"))) Then
MsgBox "Connected"
Else
MsgBox "No Connection"
End If
End Sub
+1,我會推薦這個策略(並且在被問及類似的問題[這裏](http: //stackoverflow.com/questions/23032162/excel-vba-abort-script-if-network-connection-does-not-exist/23032935#23032935))。爲了個人可讀性的原因,我明確地檢查了Len(Dir(...))= 0,儘管......好東西無論如何! –
謝謝你的回答,我已經測試了你的代碼,但是我得到了同樣的錯誤,運行時錯誤52 – Kaja
我在Access 2007 VBA中測試了此鏈接的解決方案。
http://www.vbaexpress.com/forum/showthread.php?42466-Pinging-IP-addresses-in-Access-2007
它可以作爲一個函數調用,可以在任何地方使用您的VBA代碼的名稱或IP檢測網絡資源的有效而有reuturn一個布爾值作爲結果。
我不知道你的問題是否已解決。無論如何,我有一個類似的問題,使用Excel VBA。 在我的網絡上安裝了一個diskstation後,我將這個工作站的共享文件夾映射爲Windows中的網絡文件夾,並使用字母M.通常,在啓動Windows之後,當然還有diskstation啓動並運行後,網絡驅動器將顯示在Windows資源管理器中,但它有一個紅色十字(不連接),而不是綠色(已連接)的圖標。只有在我手動點擊瀏覽器中的這個網絡位置後,它纔會變綠。當第一次發佈類似Dir(「M:\ abc」)的聲明時,我首先希望連接也可以通過我的Excel VBA程序來建立。但是沒有結果,並且圖標保持紅色。我總是首先需要在資源管理器中手動點擊。 最後,我在VBA中找到了一個解決方案,在Dir之前使用一個虛擬「shellexecute ... explore M:...」,使網絡驅動器自動連接。
Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation _
As String, ByVal lpFile As String, ByVal lpParameters _
As String, ByVal lpDirectory As String, ByVal nShowCmd _
As Long) As Long
'...
Dim RetVal As Long
Dim hwnd As Long
RetVal = ShellExecute (hwnd, "explore", "M:", vbNullString, vbNullString, SW_SHOWNOACTIVATE)
'...
a = Dir("M:\abc")
請注意,你可能需要使用Dim SW_SHOWNOACTIVATE作爲整數SW_SHOWNOACTIVATE = 4來定義SW_SHOWNOACTIVATE。 [這裏](https://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx) – JBES
瞭解運行時錯誤的詳細信息會很有用。 –
運行時錯誤52,錯誤的文件名或數字 – Kaja
只是要添加,你想檢查計算機是否連接到網絡或特定的網絡驅動器? – Gareth