【VBA】【WMI】TCP/IP ネットワーク インターフェイスのパフォーマンスを監視する

VBA・Officeカテゴリを表すパンダのイラスト VBA・Office

WMI(Windows Management Instrumentation)を利用して、VBAからTCP/IPネットワークインターフェイスのパフォーマンスを監視するサンプルコードと使い方を解説します。

この記事で何ができるか

外部の専門ツールをインストールすることなく、VBA(Excelなど)からWindowsのWMIクラス(Win32_PerfFormattedData_TCPIP_NetworkInterface)にアクセスし、ネットワークの送受信バイト数やパケット数をリアルタイムにモニタリングできます。

前提条件・参照設定

  • 動作環境: Windows 10 / 11 (VBA7 64bit/32bit環境対応)
  • VBEの「ツール」>「参照設定」から Microsoft WMI Scripting V1.2 Library にチェックを入れてください(または遅延バインディングを利用)。

VBAサンプルコード

以下のコードを標準モジュールに貼り付けて実行してください。イミディエイトウィンドウにネットワークのパフォーマンス情報が出力されます。

Option Explicit

#If VBA7 And Win64 Then
    Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#Else
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If

Sub TCPIPネットワークインターフェイスのパフォーマンスを監視する()
    ' 前提: Microsoft WMI Scripting V1.2 Library を参照設定してください。
    Dim colItems As SWbemObjectSet
    Dim objItem As SWbemObjectEx
    Dim oLocator As SWbemLocator
    Dim objWMIService As SWbemServices
    
    Set oLocator = New WbemScripting.SWbemLocator
    Set objWMIService = oLocator.ConnectServer
    Dim objRefresher As New WbemScripting.SWbemRefresher
    Set colItems = objRefresher.AddEnum _
                  (objWMIService, "Win32_PerfFormattedData_TCPIP_NetworkInterface").ObjectSet
    objRefresher.Refresh
    
    Dim i As Integer
    For i = 1 To 10
        For Each objItem In colItems
            Debug.Print "Bytes Received Per Second: " & objItem.BytesReceivedPersec
            Debug.Print "Bytes Sent Per Second: " & objItem.BytesSentPersec
            Debug.Print "Bytes Total Per Second: " & objItem.BytesTotalPersec
            Debug.Print "Caption: " & objItem.Caption
            Debug.Print "Name: " & objItem.Name
            Debug.Print "Packets Per Second: " & objItem.PacketsPersec
            Debug.Print "-----------------------------------"
            objRefresher.Refresh
            Sleep 2000
            DoEvents
        Next
    Next
End Sub

使い方と注意点

For i = 1 To 10 のループ回数や Sleep 2000 のインターフェイス更新間隔は必要に応じて調整してください。大量のプロパティをイミディエイトに出力しているため、必要に応じて確認したい項目(受信・送信バイト数など)だけを抽出して活用してください。

この記事の更新履歴

この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。

2026年9月26日

  • 変更コードブロックが通常の引用タグになっていた表示崩れを修正し、VBAコードとして正しく表示されるように整えました。
  • 追加記事の目的や参照設定、実行手順などの前提条件を解説するセクションを追加しました。

文書情報

記事タイトル
【VBA】【WMI】TCP/IP ネットワーク インターフェイスのパフォーマンスを監視する
作成日
更新日
Source URL
https://papanda925.com/?p=518

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました