nslookupの結果をExcelで出力!VBAマクロで簡単に実現する方法

このQ&Aのポイント
  • 毎月2000件の取引データをCSVファイルに保存しているとき、不正なIPアドレスがデータに残ることがあります。そのため、手作業でDNSの逆引きツールを用いてチェックしています。しかしブラウザを出して一つずつ確認するのは手間がかかります。そこで、コマンドプロンプトを呼び出し、nslookupのドメイン逆引き結果をエクセルに出力するVBAマクロを作成する方法を教えてください。IPアドレスはC列、逆引き結果はQ列に出力します。
  • お客様の取引データをCSVファイルに保存していますが、不正なIPアドレスがデータに残ることがあります。そこで、手作業でDNSの逆引きツールを使ってチェックしています。しかし、一つずつ確認するのは大変です。そこで、コマンドプロンプトを使ってnslookupのドメイン逆引き結果をエクセルに出力するVBAマクロを作成したいです。IPアドレスはC列に、逆引き結果はQ列に出力します。
  • データベースに保存している取引データには不正なIPアドレスが含まれることがあります。そのため、手作業でDNSの逆引きツールを使用してチェックしています。しかし、一つずつ確認するのは効率が悪いです。そこで、コマンドプロンプトでnslookupのドメイン逆引き結果を出力するVBAマクロを作成したいです。IPアドレスはC列、逆引き結果はQ列に出力します。作業工程を教えていただけると助かります。
回答を見る
  • ベストアンサー

nslookupの結果をExcelで出力したい。

エクセルのVBAにてnslookupの結果を出力するマクロの数値を教えていただきたいです。 ご閲覧いただき、ありがとうございます。 今、とあるwebシステムを使って 毎月2000件程のお客様の取引データをCSVファイルにて保存しております。 取引データについては、IPアドレスが振られているのですが、 不正に入手したIPアドレス等がデータに残るので、 データをDNSの逆引きツールを用いて手作業でチェックしています。 その際に使用するスクリプトがあるのですが、 一回一回ブラウザを出してチェックしなければならないので、 コマンドプロンプトを呼び出し、nslookupのドメイン逆引きの結果の 名前の項目をエクセルのセルに出力するマクロ、及びバッチファイルででの 作業工程を教えていただきたいと思います。 IPアドレス=C列 逆引きの結果=Q列 以上、宜しくお願い致します。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

ざっくりしたサンプルです。 A1:A5に調べたいIPが入っているとして、B列に名前を書きだしています。 一瞬DOS窓が開くのは我慢。 また、サンプルですのでエラー処理は入っていません。あしからず。 Sub Sample()   Dim Wsh, wExec, cmd, rRes, i, j   Dim sBuf() As String   Set Wsh = CreateObject("WScript.Shell")   For i = 1 To 5     Set wExec = Wsh.exec("%ComSpec% /c nslookup " & Cells(i, 1))     Do While wExec.Status = 0       DoEvents     Loop     rRes = wExec.StdOut.ReadAll     sBuf = Split(rRes, vbCrLf)     For j = 0 To UBound(sBuf)       If Left(sBuf(j), 5) = "Name:" Or Left(sBuf(j), 3) = "名前:" Then         Cells(i, 2) = Trim(Right(sBuf(j), Len(sBuf(j)) - 5))       End If     Next j   Next i End Sub

その他の回答 (2)

回答No.2

もしかしたら、この辺が一番簡単かも http://community.spiceworks.com/scripts/show/1201-powershell-script-dns-forward-lookup-script-with-auto-generate-excel-file ちょこっと、変更するだけ。 内容は逆転の発想です。エクセルを他のスクリプトからCOMとして呼び出し、書き込む。まあ、こっちの方が簡単でしょうね。

回答No.1

スレがなかなかつかないのは、虫がよすぎるからでしょう。 まずこの辺で、基本的な呼び出しについて学んでください http://search.yahoo.co.jp/search?p=%22%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB%22+%22VBA%22+%22DOS%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%22&aq=-1&oq=&ei=UTF-8&fr=ie8sc&n=10&x=wrt コマンドの出力結果について http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF-8&fr=ie8sc&p=%22DOS%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%22+%22%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%22 でテキストファイルを読むには http://search.yahoo.co.jp/search?p=%22%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB%22+%22VBA%22+%22%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%22%E3%80%80%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF&aq=-1&oq=&ei=UTF-8&fr=ie8sc&n=10&x=wrt なんて見れば、コピペでとりあえずできます。 できたら、大まかのところが分かったら、COM等でDNSデーターを問い合わせる物を見つけ、又はTCP/IP情報を引き出すCOMを見つけ、インスタンスとして作成してください。そうすれば変数(or Cell)に直接格納できます。 イントラネット内ですよね。インターネット上のものはセキュリティーがかかっている場合おおいのですが・・・ であれば、最初からリストしておくのが最も手っ取り早いんですけどね。キャッシュとか、どうしているんでしょうね。 まあ、がんばって

関連するQ&A

  • nslookupでlsの結果をファイルに出力

    Solaris8を使用しています。 nslookupでlsの結果をファイルに出力したい場合、例えば % nslookup > ls -d ドメイン名 > 出力ファイル名 とすればいいのはわかりますが、これをシェルで自動化しようと思うとうまくいきません。 シェルスクリプト内に、 --------------------------------------------- nslookup ls -d ドメイン名 > 出力ファイル名 exit --------------------------------------------- または、 --------------------------------------------- nslookup > 出力ファイル名 ls -d ドメイン名 exit --------------------------------------------- としてもうまくいきません。 または対話形式ではなく、nslookupに引数を渡してlsの結果を得ることが可能であれば何とかなると思うのですが・・ もしご存知の方がいらっしゃいましたらご教授お願いします。

  • nslookupの課題

    nslookupの仕組みを勉強しています。まだよく分かりません。 どなたか力を貸してください。お願いします。 1.コマンドプロンプトで nslookup コマンドを使って, 普段見ている URL やメールアドレスを IP アドレスに変換せよ。 2.コマンドプロンプトで nslookup を使って逆引きを試せ. 「1.」 で正引きしたアドレスを逆引きした結果を示せ。 3.IPv6アドレスが引けるホスト名を探して,その結果を示せ。 <ヒント> 現在は,ほとんどのホスト名には IPv4 アドレスしか登録されておらず, IPv6 アドレスが登録されているホストを見付け出すのは大変である。 検索エンジンを利用して, IPv6 の研究をしたり普及活動をしているような組織を探し 出すとよい。 以上です。よろしくお願いします。

  • NslookupでIPアドレスだけ出力,linux

    nslookupでipアドレスだけ出力できないでしょうか? nslookup hogehoge.com > test.txt みたいに実行してtest.txtは 192.168.0.1 のような、IPアドレスのみ書かれたファイルを作りたいのですが 方法はないでしょうか? 別にnslookupじゃなくてもpingとか何でもいいのでこのような形を作りたいです 環境はdebian 7. を使っています よろしくお願いします

  • nslookup FQDNでは解決されるが...

    あるドメインwww.***.jpがあります。 nslookupコマンド実行し、ドメインを、以下のように入力すると、 > nslookup ***.jp サーバー:***** Address: ***** 名前: ***.jp という結果になります。 次に、wwwを付けると、 > nslookup www.***.jp サーバー:***** Address: ***** 権限のない回答: 名前: www.***.jp Address: IPアドレス という結果になります。 質問したいのが、wwwを付けないで、nslookupの結果が、名前: ***.jp とだけ表示され、IPアドレス 表示されないのは、何が原因なのか?それとも、こういう結果は、自然なのか?です。 宜しくお願い致します。

  • 2つのエクセルから同じデータを持つ行を出力する方法

    エクセルで作成した二つのDBがあります。それぞれ、列・行の数は異なるのですが、同じ名称の列(例えば郵便番号)を持っています。 この二つのファイルから、同じ列に同じ情報をもった行を取りだす、ということをしたいのですが、関数やマクロでの実現できる方法がございましたら、教えて頂けないでしょうか。 例:二つの住所録のようなファイルAとファイルBがあって、郵便番号が154-0001のデータ(行)を、別のファイルCに出力する。(また、ファイルC上では、各データがファイルAとファイルBのどちらから出力されたものかも、判別が付くように出力したい) 分かりにくいケースで大変恐縮ですが、ご存じの方がおりましたら、どうぞよろしくお願いいたします。 ※エクセル2003を使用しています。

  • nslookupテスト結果をメールで知らせるって?

    nslookup結果をメールで送るっていうのは安全なのでしょうか? NINJA Toolsで数日前からブログ投稿不可(不具合)が多発しているようで、自分もその一人になっています。 サービス側で「nslookupをテストして画面に出たメッセージを全てメールで知らせて欲しい」との策を提案しています。 これとかです: http://csbbs.ninja.co.jp/Thread_View/29541/ このテストが何なのかそれまで知らなかったんですが、やってみたらIPアドレスとか出てきたようです。(DNSサーバーの応答状況を調べるものなんですか?) 私が使っているのはGoo、Yahoo、Googleのフリーアドレスだけです。各社セキュリティはかけていると思いますが。 自分のIPが何処かに垂れ流されて、何が起きるというわけでもないでしょうけど、 一応ネットワーク情報なのでそれを「メールで送ってくれ」って言うのがどうなのかと、疑問に感じた次第です。 どなたかアドバイス頂けますと助かります。

  • サブネットに分割したらnslookup命令で逆引きできなくなった

    よろしくお願いします。 NTTから借りているルータ内蔵型モデムのDMZホスト機能とやらを使ってみようと思い自宅ウェブサーバをDMZ領域に設置することにしました。 そのため今まで使っていたクラスCのプライベートアドレスを2つのサブネットに分割してネットワーク192.168.1.128をDMZ領域にしました。 それで、やっとこさウェブサーバのIPアドレスの変更やネームサーバの設定などを終えて通信できるようになったのですが どうもリナックスのnslookup命令で逆引きしようとすると ** server can't find 130.1.168.192.in-addr.arpa: NXDOMAIN と表示されるだけで名前解決が出来ません。 またnamed.confファイルと逆引き用のゾーンファイルを元の192.168.1.10に戻すと逆引きできるようになるという何とも不思議な現象なのです。 別に逆引きが出来なくても普通に通信が出来ているのだから問題ないのですが、やっぱりちょっと気持ちが悪いですよね。 ネットワークをサブネットに分割したのが関係しているのか、とかいろいろ考えてみたのですけど、いっこうに出来ないので、ここに聞きに来ちゃいました。 逆引きが出来ない原因に心当たりのある方はいらっしゃいますか。 どなたか教えてください。

  • EXCEL VBAでのCSV出力について

    EXCELに入力されたデータをCSV出力するプログラムを作成しました。データには日付が入っており年月日がYYYY/MM/DDの形で入力されています。これをハンド作業で名前をつけて保存でCSVに出力すると年月日はそのままの状態で保存されますが、VBAで保存するとMM/DD/YYYYの形になってしまいます。この状態で保存されると、次にEXCELで読み出すと年月日が文字列扱いになってしまいます。新しいマクロの記録で行っても結果は同じでした。 VBAで保存する際、YYYY/MM/DDで保存する方法はないでしょうか。 また、MM/DD/YYYYで保存されたCSVを日付としてEXCELに認識させる方法はあるでしょうか。 教えてください。よろしくお願いします。

  • Access2010でのExcel出力について

    お世話になります。 Access2010のクエリで抽出した結果を下記のコマンドでExcelに出力しています。 Private Sub コマンド6_Click() Dim デスクトップの場所 As String デスクトップの場所 = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" If Nz(Dir(デスクトップの場所 & "log.xlsx"), "") <> "" Then If vbNo = MsgBox("デスクトップに同じ名前のファイルが存在します。上書きしますか?", vbYesNo + vbQuestion, "ファイルが存在します") Then Exit Sub End If End If DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Q_syukei", デスクトップの場所 & "log.xlsx" DoCmd.Close MsgBox "デスクトップに案件ログのExcelファイルが出力されました" End Sub その中のフィールドにコンボボックス利用のデータが複数あり、 1列目にID番号が振られていて、2列目に目的のデータ項目が格納されています。 元のテーブルでも、クエリでも列幅を0cm;10cmとしていて、 クエリの結果もAccess上で見ると2列目のデータ項目が表示されるのですが、 出力されたExcelには1列目のID番号しか載ってきていません。 2列目のデータをExcelに出力するにはどうすればよいでしょうか。 ご教授ください。

  • エクセルファイルの一括変換・処理方法について

    エクセルファイルの一括変換・処理方法についてお聞きしたいことがあります。100行3列の数値データを持つエクセルファイルがあるとします。4列目に計算式例えば、D1=A1*B1をD列にフィルする作業を自動的に行い、かつ複数の、同様なデータを持つエクセルファイルにも一括して同一作業を行う方法を、どなたかご教授くださいませんでしょうか?おそらくマクロを使うこととなるかもしれませんが、もしそうでしたらそのマクロについてもお教えいただけるとありがたいです。よろしくお願いいたします

専門家に質問してみよう