• ベストアンサー

URLからIPを調べるマクロ

指定したURLのIPを調べたいのですが、 数が多くて手動でやるのは難しいです。 A列に複数のURLの羅列があり、 その隣に、URLのIPを記入させたいです。 これは、マクロでできますでしょうか? そのマクロは、どのような記述になりますでしょうか? エクセル2016です。 よろしくお願いいたします。

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (454/691)
回答No.2

オモシロソウで興味を引かれたので作成してみました。 A列にurlの羅列があり、 そのIPアドレスをB列に出力しています。 IPV4アドレスでいいですね? ポストしたコードは DNSサーバーの設置状況(特に台数)に依存します。 もし期待通り動作しない場合は 適当なホスト名でNSLookupを実行し その戻り値全数をポストしてみてください。 Option Explicit 'IPアドレス取得メイン Sub PutIP()  Dim rowEnd As Long  Dim buf As String  Dim i As Long  rowEnd = Cells(Rows.Count, 1).End(xlUp).Row  For i = 1 To rowEnd   buf = UrlToHost(Cells(i, 1).Value)   If Not buf = "" Then    Cells(i, 2).Value = GetNsLookUp(buf)   End If  Next i End Sub 'nslookupを発行して戻り値からIPアドレスを取得 Function GetNsLookUp(buf As String)  Const ChkStrLine = 4 'チェック開始行番号  Dim WSH, wExec, sCmd As String, Result As String, tmp  Dim LineCnt As Long  Dim wkIP As String    Set WSH = CreateObject("WScript.Shell")  sCmd = "nslookup " & buf  Set wExec = WSH.Exec("%ComSpec% /c " & sCmd)  Do While wExec.Status = 0   DoEvents  Loop  Result = wExec.StdOut.ReadAll  tmp = Split(Result, vbCrLf)  If UBound(tmp) < ChkStrLine Then   GetNsLookUp = ""   Exit Function  End If    For LineCnt = ChkStrLine To UBound(tmp)   wkIP = GetIPAdddrss(tmp(LineCnt))   If wkIP <> "" Then    GetNsLookUp = wkIP    Exit Function   End If  Next LineCnt  Set wExec = Nothing  Set WSH = Nothing End Function '//nslookupの戻り値からIPAddrss(V4)を取得 Function GetIPAdddrss(strIP) As String  Dim wkStr1 As String  Dim wkStr2 As String  GetIPAdddrss = ""  wkStr1 = StrConv(strIP, vbUpperCase)  wkStr1 = Replace(wkStr1, Chr(9), "")  wkStr1 = Replace(wkStr1, "ADDRESS:", "")  wkStr2 = Trim(wkStr1)  wkStr1 = Replace(wkStr2, ".", "")  If IsNumeric(wkStr1) = True Then   GetIPAdddrss = wkStr2  End If End Function '//urlからホスト名を取得 Function UrlToHost(InUrl As String) As String  Dim wkpos As Long  Dim wkStr As String  UrlToHost = ""  wkpos = InStr(InUrl, "//")  If wkpos = 0 Then Exit Function  wkStr = Right(InUrl, Len(InUrl) - wkpos - 1)  wkpos = InStr(wkStr, "/")  If wkpos = 0 Then Exit Function  UrlToHost = Left(wkStr, wkpos - 1) End Function

mute_low
質問者

お礼

次々とIPを取得することができました。 ありがとうございます!

その他の回答 (1)

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.1

お困りのようですね。 しかし大変恐縮ですが、これでは丸投げでだれかやってという感じ。 この掲示板はボランティアが答えているわけですから、 本当にお困りなら業者に依頼するのが良いかと。 とはいえ。現在手動でやっているのをマクロの記録で記録して その後はそのマクロをいじって使い方を変えればよいのではないでしょうか。

関連するQ&A

  • URLの羅列からソースの中に「WordPress」

    A列にURLの羅列が記入されています。 そのURL先のサイトのソースの中に、 「WordPress」の記述がないものを、別セルに表示させたいです。 おそらく、マクロで出来ると思うのですが、 そのマクロはどのような記述になるでしょうか? エクセル2016です。 よろしくお願いいたします。

  • URLからWordPressではないサイトを抽出す

    URLがA列それぞれのセルに記入されています。そのURL達の中で、”WordPressで作ったサイトではない”サイトを抽出したいです。 WordPressで作ったサイトは、 ソースの中に「WordPress」という記述があります。 それがあると、URLの隣にバツ。 WordPressではないサイトURLの隣に◯。 という風に、できるでしょうか? おそらく、マクロを使うかもしれません。 そのマクロの記述はどのようなものになるでしょうか? エクセル2016です。 よろしくお願いいたします。

  • エクセルのソートのマクロ

    エクセルでのソートのマクロを教えてください。  範囲選択は手動でその都度変更します。優先列、昇順は変更ありません。 例えば、AからE列までデータがあり、第一優先列をD列、第二優先列をA列として、それぞれ昇順でソートします。 範囲はその都度手動で複数行を全列選択します。 つまり、適宜、複数行を選択してからこのマクロを実行すれば常に先の形式でソートできるようにしたいです。  わかりにくい記述で恐縮ですがよろしくお願いします。

  • 同じマクロを同時に動かす

    URL先から情報を取得するマクロ。 このURL先から情報を取得するマクロというのは、 URL先のソースの中に、指定した語句があれば、 隣のセルに○を付けるというものです。 調べるURLの量が多いため、これを早く完了させるために、 同じExcelを開いて、同じマクロを同時に動かしたいです。 ですが、これって可能なのでしょうか? 同じExcelを開こうとしても、複数分けて開けないですし、 上記のマクロを同時に動かすと、回線か何かに弊害があるかもと思いました。 調べるURLの量が多いですが、 複数同時にやれば、短い時間で完了できそうです。 複数のExcelを同時に開いて、同じマクロを同時に動かす。 これは可能でしょうか?また、弊害があったりするでしょうか? よろしくお願いいたします。

  • ドメインのアドレスを、マクロで取得する

    A列にずっと下へ、ドメイン名(〇〇.com)が記入をされています。 そのドメイン名(〇〇.com)の、 全てのアドレス(https://~、http://~)を取得したいです。 この場合、どのようなマクロの記述になるでしょうか? ドメインの量が多くて、手動ではできないです。 そのため、マクロで自動で取得していきたいです。 Excel2016です。 よろしくお願いいたします。

  • Google検索をして、その下に検索結果(URL)

    A列1行から、ずっと右へキーワードが記入されています。 調べたいキーワードは、400近くあります。 その1行目にあるキーワードをGoogle検索をして、 検索結果のURLだけを、そのキーワードの下に表示させたいです。 検索結果は全部で10ページくらい、大体100個のURLになるかと思います。 (youtube動画や広告などは含めないです) このようなことは、Excelのマクロでできるでしょうか? できるとしたら、どのようなマクロの記述になるでしょうか? Excel2016です。 よろしくお願いいたします。

  • 《エクセル》 マクロ-セルの範囲指定の式

    いつもお世話になります。 2つお聞きしたいのですが、エクセルで、 ・「A列のデータのあるセル範囲のみを指定する」と、 ・「A列のデータのあるセル範囲の、隣(B列)のセルを指定する」 というマクロの式はどのように書けば良いのでしょうか。

  • マクロ記述の簡略化

    以前 教えていただいた式コピーの マクロについてなのですが A1にデータがあり B1に式があって その式をA列のデータがある部分までBにコピーするという 内容で教えていただきました。 これで同様にC1にも式があり その式をA列のデータがある部分までCにコピーするという 内容を付け加えたのですが とりあえずまったく同じマクロを記入して 変数を変えてB1部分の記述をCIに置き換えて ・・・という方法でしましたところ 当然ばっちり動くのですが なんせ同じ記述を2回しているので 見にくくなっていたり動作が遅くなりそうで もっとすっきりした記述があればと思っています。 なにか良い方法ありましたら御教授願います。 私に応用力がないものでお手数おかけいたします。 参照URLのfreezemoon様から教えていただいた マクロについてです。 http://okweb.jp/kotaeru.php3?q=936658

  • Excel2007です。マクロについて教えてください。

    エクセル2007です。マクロについて教えてください。 エクセルで英語の単語問題を作りたいのですが・・・ 例えばセルA列とB列(A列30問B列30問で全60問)に単語問題が記入されています。C列とD列が答えを記入する欄です。答えを記入し終えたら、「答え合わせボタン」を押して間違えた解答の文字だけが赤くなる。このような物を作成するにはどのようにすればいいでしょうか?? どなたか回答よろしくお願い致します。

  • エクセルマクロで教えてください

    Sub REI817()    Range("A1", "A100").Select End Sub で"A100"の部分を可変にしたい(A列の使用している部分だけ)のですがどのように記述したらよいでしょうか。 また、A行のと同じ範囲数をC行に指定するにはどうしたらよいでしょうか。 エクセル2003です。宜しくお願いいたします。

専門家に質問してみよう