• ベストアンサー

URLからIPアドレスをGETする方法

エクセルで、URLからIPアドレスをGETして、それを別のせるに 記述する。 といったことはできるのでしょうか。 コマンドプロンプトの、nslookupのような機能です。 それがエクセルでできればいいのですが・・・。 nslookupや、IPひろばなどを使えば済むのですが、URLのリストが 100件以上あって、まる一日時間がかかってしまいます。 どなたかご存知の方がいらっしゃいましたら、ご教授 いただけないでしょうか? 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#111181
noname#111181
回答No.2

ANo.1で回答した者です。お礼メッセージをありがとうございます。 > cmdが立ち上がりっぱなしになってしまうのですが、これは仕様なのでしょうか? nslookupが終わり次第、コマンドプロンプトも閉じるはずですが。 もしうまく行かないようでしたら、コマンド実行部分を Set exec = wsh.exec("%ComSpec% /k " & cmd) または Set exec = wsh.exec("%ComSpec% " & cmd) のように変更してみてください。

hamu1985
質問者

お礼

何度も何度も、ご回答頂き本当にありがとうございます。 変更したところ、無事消えるようになりました。 ありがとうございます。 今回、i80286様にご回答頂き、プログラミングやOSの知識 が無いことを実感しました。 プログラミング、OSについての知識をこれから学ぼうと思います。 ありがとうございました。

その他の回答 (1)

noname#111181
noname#111181
回答No.1

できます。 まず、下記の関数を標準モジュール(ユーザー定義関数)として用意してください。 標準モジュールの作り方はhttp://www.serpress.co.jp/excel/vba037.htmlを参考にしてください。 -------------------------------- Option Explicit Function nslookup(url As String) As String Dim wsh, exec, cmd, res As String, i As Integer Dim buf() As String Set wsh = CreateObject("WScript.Shell") cmd = "nslookup " & url Set exec = wsh.exec("%ComSpec% /c " & cmd) Do While exec.Status = 0 DoEvents Loop res = exec.StdOut.ReadAll nslookup = res buf = Split(res, vbCrLf) For i = 0 To UBound(buf) If Left(buf(i), 8) = "Address:" Then nslookup = Mid(buf(i), 11) End If Next i End Function -------------------------------- Excelシート側では =UserFunc.nslookup("okwave.jp") のようにします。

hamu1985
質問者

お礼

おぉ!!これです。ありがとうございます。 本当に感謝です。 cmdが立ち上がりっぱなしになってしまうのですが、 これは仕様なのでしょうか? IPアドレスを調べたら、自動的に消す方法はあるのでしょうか? 質問ばかりでもうしわけないです・・・

関連するQ&A

専門家に質問してみよう