我需要檢查Excel工作簿打開時的Internet連接。爲此,我試着下面的代碼:從Excel VBA檢查互聯網連接
Private Declare PtrSafe Function InternetGetConnectedState _
Lib "wininet.dll" (ByRef dwflags As Long, _
ByVal dwReserved As Long) As Long
Private Const INTERNET_CONNECTION_MODEM As Long = &H1
Private Const INTERNET_CONNECTION_LAN As Long = &H2
Private Const INTERNET_CONNECTION_PROXY As Long = &H4
Private Const INTERNET_CONNECTION_OFFLINE As Long = &H20
Function IsInternetConnected() As Boolean
Dim L As Long
Dim R As Long
R = InternetGetConnectedState(L, 0&)
If R = 0 Then
IsInternetConnected = False
Else
If R <= 4 Then
IsInternetConnected = True
Else
IsInternetConnected = False
End If
End If
End Function
它的工作原理,但一些用戶報告這是打破Excel(它永遠凍結Excel)。
有沒有辦法拋出一個錯誤或以某種方式糾正此代碼,以找出問題的原因是什麼(防火牆等)?
非常感謝您的幫助!
這是一個64位導入。 「凍結」計算機是否運行32位Office安裝?對編譯器指令進行一些研究,以瞭解如何將兩者合併到單個模塊聲明區域中。 – Jeeped
@Jeeped謝謝你的幫助。我正在運行一個32位Excel安裝,我沒有問題。 –
'PtrSafe'告訴我這是一個64位導入。此外,[InternetGetConnectedState](https://msdn.microsoft.com/en-us/library/windows/desktop/aa384702%28v=vs.85%29.aspx)旨在返回布爾值,而不是長整型。 – Jeeped