xxx.xxx.xxx.xxx形式のIPアドレスから国名を調べる作業をしているとき面倒になって作った関数です。
Excelシート内でユーザ定義関数として使用、またはVBA内で使用することができます。
https://software77.net/geo-ip/ より取得したデータをVLOOKUP関数で拾っているだけですが、データベース上に記載されていない127.0.0.1など予約済みアドレスを関数内でチェックして、該当する場合、適当なネットワーク名を返すようにしています。
手元のマシンでは100万件のデータを2分強で処理できました。
Excelシート中で=IP2COUNTRY(A2)のように関数として記述するとセルの内容で国名を取得できます。第2引数により国名の略称やレジストリを取得することできます。
' Option Explicit Public Sub SetCountryNames() Dim xlSrcWorksheet As Excel.Worksheet Set xlSrcWorksheet = ThisWorkbook.Worksheets("サンプル") Dim rowIndex As Long Dim ip As String Dim countryName As String rowIndex = 2 ip = xlSrcWorksheet.Cells(rowIndex, 5).Value Do While ip <> "" countryName = IP2COUNTRY(ip) xlSrcWorksheet.Cells(rowIndex, 6).Value = countryName rowIndex = rowIndex + 1 If rowIndex >= 1048577 Then Exit Do End If If rowIndex Mod 100 = 0 Then Debug.Print rowIndex DoEvents End If ip = xlSrcWorksheet.Cells(rowIndex, 5).Value Loop End Sub
Please give us your valuable comment