Excel / VBA – 如果networking连接不存在,请中止脚本

有没有任何VBA代码来寻找目前的互联网连接?

我有一个将在计时器上运行的代码。 此代码将在本地networking共享驱动器上打开文件。 我正在寻找某种types的On Error Goto ErrorMessage代码,如果它试图打开文件,当networking没有连接。

您可以在您尝试访问的共享驱动器上查看Len of Dir

 Option Explicit Sub TestForNetworkDrive() 'suppose the file we want is at Z:\cool\vba\files\file.txt If Len(Dir("Z:\cool\vba\files\file.txt")) = 0 Then 'handle network not available issue MsgBox ("Network share not found...") Else 'do timer-based code here MsgBox ("Let's get to work!") End If End Sub 

此function可在Mac和PC上使用,32位以及64位Excel版本。

宣言:

 Option Explicit #If VBA7 And Win64 Then Private Declare PtrSafe Function InternetGetConnectedStateEx Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal lpszConnectionName As String, ByVal dwNameLen As Integer, ByVal dwReserved As Long) As Long #Else Private Declare Function InternetGetConnectedStateEx Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal lpszConnectionName As String, ByVal dwNameLen As Integer, ByVal dwReserved As Long) As Long #End If 

function:

 Function IsInternetConnected() As Boolean Dim strConnType As String, lngReturnStatus As Long, MyScript As String If Application.OperatingSystem Like "*Macintosh*" Then MyScript = "repeat with i from 1 to 2" & vbNewLine MyScript = MyScript & "try" & vbNewLine MyScript = MyScript & "do shell script ""ping -o -t 2 www.apple.com""" & vbNewLine MyScript = MyScript & "set mystatus to 1" & vbNewLine MyScript = MyScript & "exit repeat" & vbNewLine MyScript = MyScript & "on error" & vbNewLine MyScript = MyScript & "If i = 2 Then set mystatus to 0" & vbNewLine MyScript = MyScript & "end try" & vbNewLine MyScript = MyScript & "end repeat" & vbNewLine MyScript = MyScript & "return mystatus" If MacScript(MyScript) Then IsInternetConnected = True Else lngReturnStatus = InternetGetConnectedStateEx(lngReturnStatus, strConnType, 254, 0) If lngReturnStatus = 1 Then IsInternetConnected = True End If End Function 

使用Sub中的函数:

 If IsInternetConnected Then MsgBox"Network Connection Detected" Else MsgBox"No Network Connection Detected" End If 

我通常使用下面的代码来确定networking连接是否退出。 该函数返回true或false。

宣言:

 Private Declare Function InternetGetConnectedStateEx Lib "wininet.dll" (ByRef _ lpdwFlags As Long, ByVal ipszConnectionName As String, ByVal _ dwNameLen As Integer, ByVal dwReserved As Long) As Long 

function:

 Public Function IsInternetConnected() As Boolean Dim strConnType As String Dim lngReturnStatus As Long IsInternetConnected = False lngReturnStatus = InternetGetConnectedStateEx(lngReturnStatus, strConnType, 254, 0) If lngReturnStatus = 1 Then IsInternetConnected = True End Function 

使用Sub中的函数:

  If IsInternetConnected = False Then output = MsgBox("No Network Connection Detected!", vbExclamation, "No Connection") Else Do stuff that requires the network connection End If