ExcelでIPアドレスからホスト名を表示する関数を作成しました。
使い方を説明します。
この記事は、
- エクセルでIPアドレスからホスト名を表示させたい
- エクセル関数でnslookupを実行したい
- VBAでコマンドプロンプトを画面非表示で実行したい
そんな方に読んでもらいたいです。
使い方
標準でIPアドレスを表示する関数はないので、自作した関数を使います。
セルA1に自作関数nslookupを入力します。
=nslookup(B2)
試しに自分のホスト名を表示させたいので引数は自分のipにします。
自分のホスト名が表示されました。
直接IPを書いても同じ結果になります。=nslookup(“192.168.50.217”)
この方法で他の内容も取得します。
上から関数の内容です。
- =nslookup(B3)
- =nslookup(B4)
- =nslookup(B5)
最後に存在しないIPを試していますが、存在しない場合は結果が0になります。
うまく動かない場合ですが、この関数はコマンドプロンプトでnslookupコマンドを実行した結果を表示しています。
なのでDNSサーバが設定されているかを確認してください。
確認方法はWindowsキー+Rで名前を指定して実行を開き、cmdを入力してOK
コマンドプロンプトでnslookupコマンドを実行して既定のサーバが表示されている事を確認しましょう。
画面は右上の×で閉じてください。
動きが思い通りだった場合は、次の自作関数の設定を行ってください。
自作関数はプログラムのコピペでできるので簡単にできます。
自作関数の設定
プログラムをコピペする画面を開く操作の説明です。
ツールの[開発]から[Visual Basic]を選択して「Microsoft Visual Basic for Applications」を開く
ツールの[挿入]から[標準モジュール]を選択
真っ白な画面が出るので下のコードをコピーして貼り付けます。
Function nslookup(ip) Set シェル = CreateObject("WScript.Shell") コマンド = "nslookup " & ip シェル.Run "%ComSpec% /c " & コマンド & "|clip", 0, True 結果データ = GetObject("\", "htmlfile").ParentWindow.ClipboardData.GetData("text") 結果リスト = Split(結果データ, vbCrLf) For Each 結果 In 結果リスト If 結果 Like "*名前:*" Then nslookup = WorksheetFunction.Trim(Replace(結果, "名前:", "")) Exit Function End If Next End Function
コピーが出来たら一度Excelの拡張子を.xlsmで保存してセルに関数を入れて試してみてください。
例の関数はGoogleのIPアドレスを指定しています。
ホスト名が表示されれば成功です。
VBAはどうやって覚える?
プログラムのコードが読めないと、参考にしているコードの理解や自分でプログラムを書くときに時間がかかってしまいます。そんな時は基礎から学ぶと応用もできるようになり自分の作りたいプログラムがスムーズに作れるようになります。
無料でやるならネット上の学習サイトを参考にするといいです。
こちらはVBAの基礎から説明している無料のWEBサイトになります。
>>基礎から学べるWEBサイトを見てみる
過去にネットでの学習でつまずいた方には専門書をオススメします。
本なら基礎から学べる事はもちろん、読者視点で分かりやすい解説になっています。
一人で集中してコツコツ進めたい方は書籍を試してください。
本を読んでもわからない所が多すぎたり、誰かに質問したい場合はオンラインスクールを見てみましょう。
カウンセリングから目的に応じた学習プランと教材を提供してくれるので、プログラミングの敷居がとても低くなります。
誰かに相談できるのは心強いです。
>>オンラインスクールを無料体験で始める
まとめ
自作関数を使うことでIPアドレスからホスト名を表示する事ができました。
仕組みとしてはnslookupをバックグラウンドで実行するので、Excelの操作以外を気にする必要はありません。
パソコンに詳しくない人でも、この自作関数の入ったExcelがあればすぐにからホスト名を確認できるので活用してみてください。