VBAを使って、コンピュータがインターネットに接続されているかどうかを確認する方法を学びます。この方法は、Microsoft Officeのアプリケーション(Excel, Accessなど)で使用するのに適しています。
Ping コマンドとは
Pingはネットワーク上のホストが動作しているかを確認するためのツールです。以下は、VBAでPingコマンドを使って特定のURLやIPアドレスへの接続を確認するコードの例です。
このFunction関数は、デフォルトでGoogleのウェブサイトをpingします。異なるURLやIPアドレスを引数として提供することも可能です。
Function IsConnectedToInternet(Optional sURL As String = "www.google.com") As Boolean
Dim objShell As Object
Dim lReturn As Long
Dim sCommand As String
' pingコマンドの実行
sCommand = "ping -n 1 " & sURL
Set objShell = CreateObject("WScript.Shell")
lReturn = objShell.Run(sCommand, 0, True)
' 結果の評価
If lReturn = 0 Then
IsConnectedToInternet = True
Else
IsConnectedToInternet = False
End If
Set objShell = Nothing
End Function
【ポイントの解説】
sCommand = "ping -n 1 " & sURL
Excel VBAでのProgID活用法: CreateObjectとGetObjectの比較
- ping:これは、指定されたホストにICMPエコー要求を送信するコマンドです。ホストからエコー応答が返ってくれば、そのホストがネットワーク上でアクティブであることを示します。
- -n 1:このオプションは、エコー要求の回数を指定します。-n 1 は、エコー要求を1回だけ送信することを意味します。デフォルトでは、多くの環境ではpingコマンドは4回のエコー要求を送信しますが、このオプションを使用することで、要求の回数を1回に制限しています。
Set objShell = CreateObject("WScript.Shell")
WScript.Shellとは?
このオブジェクトを使用することで、スクリプト(簡易プログラム)からシステムのシェル(一連動作)を操作したり、システムコマンドを実行したりすることができます。
CreateObject 関数とは?
VBAから多くの外部アプリケーションやシステムオブジェクトにアクセスできます。
lReturn = objShell.Run(sCommand, 0, True)
Run メソッドとは
外部のコマンドやプログラムを実行するために使用されます。
上記のFunction関数で書かれたコードを実際に使用する場合には以下のコードを実行することで実務にも応用ができます。
Sub TestConnection()
If IsConnectedToInternet() Then
MsgBox "インターネットに接続されています。"
Else
MsgBox "インターネットに接続されていません。"
End If
End Sub
なぜping コマンドを使用する方法が有効なのか
ping コマンドは、特定のホストとの間の基本的な通信を確認する手段として動作します。エコー要求が正常に送信されてエコー応答が戻ってきた場合、そのホストがネットワーク上で利用可能であると判断できます。