• 締切済み

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/1415)
回答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 "の後の関数名を調べて みてください。尚、型記号(&とか)は入れないで検索します。

関連するQ&A

  • クライアントのホスト名取得方法

    自社内のクライアントコンピュータのホスト名を取得するコマンドまたはプログラミング(VB)を教えてください。よく巷にあるツールを使うとIPアドレスから生死確認、ホスト名取得がありますがあれがどのようにやっているのかわかりません。生死確認はpingだと思うのですが、ホスト名をどのようにして取得しているかを知りたいです。自社の出勤管理にコンピュータ名(ホスト名)の一覧を取得したいと考えています。対象コンピュータはWindowsで、管理コンピュータもWindowsです。よろしくお願いします。

  • ネットワーク上のPCのIPとホスト名を取得

    早速ですが、 ネットワーク上のPCのIPとホスト名を取得したいのですが、APIかコマンドから取得できるでしょうか? (できればAPI) 1.IPからホスト名取得 2.ホスト名からIPアドレスの取得 [環境] windows2000 VB6.0 すみません。教えてください。

  • IPアドレスからホストを知りたい

    IPアドレスからソフトを知るのに http://www.kagoshima-it.go.jp/~nagayosi/php.htmlを利用させてもらってるんですが、それではホストの出ないIPアドレスがあります。 どういう事でしょうか? ホストを知る方法はありますか?

  • ホスト名が認識できない

    Solaris+Cです。 対向装置(VBで作成)と送受信するために、ソケットを使用している以下のようなコードがあります。 iRet = waitAccept( giSocket, &sockAddr, &iSockAddrLen, &giAccept); /* iRetがエラーの場合のエラー処理(割愛)*/ /* IPアドレスからホスト名取得 */ hentpName = gethostbyaddr(   (char *)&(sockAddr.sin_addr), 4, AF_INET); ここで、waitAcceptは正常に抜けてくるのですが、gethostbyaddrが常にNULLを返してきます。 gethostbyaddrでホスト名を取得させるためには、どこかに何らかの設定が必要なのでしょうか? よろしくお願いします。

  • gethostbyaddrでのホスト名取得エラー

    タイトルの通りなのですが、 gethostbyaddr関数にてサーバーPCのホスト名を取得しようとしたところ、 NULLが返ってきてしまうのです。 ただ、ファイアウォールを無効にすると取得できるのです。 他のPCで試したところ正常に取得できたので、 処理自体は間違っていないかと思います。 取得部分だけですが以下に示します。 // サーバ情報の取得 if( isalpha( EHost -> Text.SubString(1,1).c_str()[0] ) ) { hostEnt = gethostbyname( EHost -> Text.c_str() ) ; } else // IPアドレスの時 { addr = inet_addr( EHost -> Text.c_str() ) ; hostEnt = gethostbyaddr( (char*)&addr, 4, AF_INET ) ; } if( hostEnt == NULL ) { errMsg = "エラー:アドレスを解決できない [" + EHost -> Text + "]" ; MessageDlg( errMsg, mtWarning, TMsgDlgButtons() << mbOK, 0 ) ; SB -> SimpleText = errMsg ; WSACleanup() ; return ; } この処理自体は本についていたサンプルですので、 問題はないとおもいっています。 PCの設定も正常に取得できるPCに合わせてみても駄目でした。 ただ、何処か別の設定があるのかがわからないのです。 それと、OSがWindows Embedded Standard 2009なので、 OSイメージの作成に問題があるのかとも考えているのですが、 ファイアウォールの無効だけで取得できるようになるということは 何処か設定なのではと思っているのですが・・・。 開発環境はBoriand Developer Studio 2006です。 どなたか情報をお持ちの方がいらっしゃいましたら、 お教え頂けませんでしょうか。 よろしくお願いいたします。

  • PHPで任意のurlからホスト名を取得するには

    PHPでseoツールを作っています 入力されたurlから、ホスト名かIPアドレスを取得するのは可能でしょうか?? お願いします。

    • ベストアンサー
    • PHP
  • Excel VBA マクロ 繰り返し処理について

    初めて、ご質問させて頂きます。excel2003で、VBAによる連続繰り返し処理をしたいのですが、プログラムの知識が全くありませんので、どなたかご教授頂けませんでしょうか。 VBAによる連続繰り返し処理の内容は、excelの1つの列に上から順番に、IPアドレスを4つずつ同じ値で、入力したいのです。 例:10.30.118.1、10.30.118.1、10.30.118.1、10.30.118.1、10.30.118.2、10.30.118.2、10.30.118.2、10.30.118.2、10.30.118.3、10.30.118.3、10.30.118.3、10.30.118.3、、、 上記の例の様に、1つの列上で上のセルから順番に、4つずつ同じ値を順番に、4000行程度入力したいのですが、手で入力するのは、大変時間がかかる為、自動で入力させたいと思っています。 恐らくfor文を使うのでしょうが、その構文がわかりません。 初心者で大変申し訳ないのですが、どなたかご教授下さい。

  • HiMdRendererでMP3に変換した曲のCDトラック名取得

    HiMdRendererでMP3に変換した曲のCDトラック名取得 HiMdRendererでMP3に変換した曲をiTunesで「ファイルをライブラリに追加」ってゆうのを押して、取り込んだんですが、CDトラック名を取得できません。「iTunesを使ってインポートした曲じゃないとCDトラック名を取得できません」と出てしまうんです。 SonicStageVの曲をすべてiTunesに移行したいので、CDトラック名を一つ一つ手で入力するわけにはいかないです。 どうすればいいでしょうか? ちなみに文章を見ればわかると思いますが、あまりパソコンに詳しくないです。。

  • エクセルVBAでセル選択

    エクセル2000でリストを作成し、VBAで編集しようとしています。 A列に入力されているコードの先頭に「’」をつけて文字列とするための関数をB2のセルからA列のデータが入力されている最後のセルの隣までコピーしたいと思っています。 A列の最終セルを取得するVBAは分かったのですが、その値をB列の選択範囲として使用する方法がわかりません。 エクセルVBAは全くの初心者です。 どなたか教えてください!

  • ブックを開く順序ってブック名取得に関係あるのでしょうか??

    エクセルブックAに他に開いているブック名を取得するマクロを作っています。 ブックBを開いてブックAを開き、マクロを実行すると正常に動きますが、ブックAを先に開いてマクロを実行するとブックがないと言ってきます。 ブックを開く順序ってブック名取得に関係あるのでしょうか??

専門家に質問してみよう