我需要检查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