• 締切済み

Excel VBAでホスト名取得

タイトルにあるようにExcel VBAでホスト名の取得を行いたいと思っています。 処理としては、あらかじめセルに入力してあるIPアドレスを変数に入れて、そこからホスト名を取得して隣のセルに入力する。 という処理を行いたいのですが、変数に入れて隣のセルにという部分はわかるのですが、ホスト名取得の方法がわかりません。 VBAではできないのでしょうか? 教えて下さい。 webサイトでIPアドレスを入れるとホスト名を取得できる下記のようなサービスをVBA上で行いたいのですが。 http://www.cman.jp/network/support/ip.html http://www.kagoshima-it.go.jp/~nagayosi/php.html よろしくお願いします。

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.1

クラスモジュールを作ります。以下はClass1とします。 Private Declare Function WSAStartup& Lib "WS2_32" (ByVal V%, D&) Private Declare Function inet_addr& Lib "WS2_32" (ByVal A$) Private Declare Function gethostbyaddr& Lib "WS2_32" (A&, ByVal S&, ByVal N&) Private Declare Function WSACleanup& Lib "WS2_32" () Private Declare Sub RtlMoveMemory Lib "KERNEL32" (ByVal D&, ByVal S&, ByVal L&) Private Declare Function lstrlenA& Lib "KERNEL32" (ByVal T&) Private Declare Function SysAllocStringByteLen$ Lib "OLEAUT32" (ByVal A&, ByVal L&) Private Sub Class_Initialize() ReDim B&(99) WSAStartup &H202, B(0) End Sub Private Sub Class_Terminate() WSACleanup End Sub Public Function GetName$(ByVal A$) Dim X&, Y& X = inet_addr(A) X = gethostbyaddr(X, 4, 2) If X <> 0 Then     RtlMoveMemory VarPtr(Y), X, 4     GetName = SysAllocStringByteLen(Y, lstrlenA(Y)) End If End Function 呼び出す方の処理 Dim C As Class1 Set C = New Class1 Debug.Print C.GetName("192.168.11.11") '★実際のアドレス Set C = Nothing 何をどうやっているかは"Declare Function "の後の関数名を調べて みてください。尚、型記号(&とか)は入れないで検索します。