【ExcelVBA】IPアドレスを自作関数の=network(“ip”)で表示する。グローバルIP・IPv6・サブネットマスクも取得可能。

スポンサーリンク




趣味のプログラム

Excelで自分のIPアドレスを取得する関数を作成しました。
使い方を説明します。

この記事は、

  • エクセルで自分のIPアドレス、サブネットマスク、ゲートウェイを表示したい
  • エクセルでグローバルIPアドレスを表示したい
  • エクセルでIPv6のアドレスも表示したい

そんな方に読んでもらいたいです。

 

 

スポンサーリンク

使い方

標準でIPアドレスを表示する関数はないので、自作した関数を使います。

セルB1に自作関数networkを入力します。
=network(“ip”)

今回はIPアドレスを表示させたいので引数はipにします。

自身のIPアドレスが表示されました。

引数は関数にしてほしい事を伝えるメッセージでカッコの中に書きます。

 

この方法で他の内容も取得します。

上から関数の内容です。
セキュリティの都合上IPv6のアドレスとグローバルIPアドレスは、見えないように塗りつぶしています。

  • =network(“ip”)
  • =network(“sm”)
  • =network(“gw”)
  • =network(“ipv6”)
  • =network(“smv6”)
  • =network(“gwv6”)
  • =network(“gip”)

 

IPv6の部分はIPv6が使える環境でないと正しく表示されません。
一番下のグローバルIPは、インターネットに繋がらないと表示できないので注意してください。

ExcelからグローバルIP確認サイトへ接続してその結果をExcelへ表示しています。

動きが思い通りだった場合は、次の自作関数の設定を行ってください。
自作関数はプログラムのコピペでできるので難しくありません。

 

 

自作関数の設定

プログラムをコピペする画面を開く操作の説明です。
ツールの[開発]から[Visual Basic]を選択して「Microsoft Visual Basic for Applications」を開く

開発タブが無い場合は、[ファイル]-[オプション]-[リボンのユーザー設定]で開発のチェックを入れて下さい。

ツールの[挿入]から[標準モジュール]を選択

真っ白な画面が出るので下のコードをコピーして貼り付けます。

 

このコードをコピーして貼り付けます。
Function network(引数) As String
    'グローバルIPの場合のみWEBアクセスする
    If 引数 = "gip" Then
        Set httpリクエスト = CreateObject("MSXML2.XMLHTTP")
        httpリクエスト.Open "GET", "https://www.cman.jp/network/support/go_access.cgi"
        httpリクエスト.send
        Do While httpリクエスト.readyState < 4
            DoEvents
        Loop
        'HTMLのテキストファイルを取得
        レスポンス = httpリクエスト.responseText
        'グローバルIPのタグを特定※該当サイトはID="sysNowIp"が対象
        グローバルIPタグ行 = Filter(Split(レスポンス, Chr(10)), "sysNowIp")
        'タグの行からIPアドレスのみ切り出し
        network = Replace(Replace(Split(グローバルIPタグ行(0), " ")(2), """", ""), "value=", "")
        Exit Function
    End If
    'NIC情報を取得
    Set NICオブジェクト = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration Where (IPEnabled = TRUE)")
    For Each NIC In NICオブジェクト
        Select Case 引数
            Case "ip"
                network = NIC.IPAddress(0)
            Case "sm"
                network = NIC.IPSubnet(0)
            Case "gw"
                network = NIC.DefaultIPGateway(0)
            Case "ipv6"
                network = NIC.IPAddress(1)
            Case "smv6"
                network = NIC.IPSubnet(1)
            Case "gwv6"
                network = NIC.DefaultIPGateway(1)
        End Select
        Exit Function
    Next
End Function


コピーが出来たら一度Excelの拡張子を.xlsmで保存してセルに関数を入れて試してみてください。

=network(“ip”)

IPアドレスが表示されれば成功です。

 

スポンサーリンク

使用用途など

例えばIPアドレスで接続場所を判断したい場合に使えます。

事前に社内のグローバルIPアドレスを設定しておけば、Excelを開いて指定以外のIPだった場合にあなたは今グローバルIPが○○なので社外から接続しています。
と表示させる事ができます。

また、社内であっても自動で割り振られたIPアドレスによって場所を特定できます。
あなたは今ローカルIPが○○なので東京本社3F南フロアから接続しています。
というイメージです。

注意というほどではないですが、申請書などに申請者のIPアドレスが分かるように自作関数を入れたとしたら、表示結果を値として貼り付けするのを忘れないようにしてください。

IPv6のアドレスやグローバルアドレスは悪用される可能性があるので、安易に公開しないようにしましょう。

 

VBAはどうやって覚える?

プログラムのコードが読めないと、参考にしているコードの理解や自分でプログラムを書くときに時間がかかってしまいます。
そんな時は基礎から学ぶと応用もできるようになり自分の作りたいプログラムがスムーズに作れるようになります。

無料でやるならネット上の学習サイトを参考にするといいです。
こちらはVBAの基礎から説明している無料のWEBサイトになります。

>>基礎から学べるWEBサイトを見てみる


過去にネットでの学習でつまずいた方には専門書をオススメします。
本なら基礎から学べる事はもちろん、読者視点で分かりやすい解説になっています。
一人で集中してコツコツ進めたい方は書籍を試してください。



本を読んでもわからない所が多すぎたり、誰かに質問したい場合はオンラインスクールを見てみましょう。
カウンセリングから目的に応じた学習プランと教材を提供してくれるので、プログラミングの敷居がとても低くなります。
誰かに相談できるのは心強いです。

>>オンラインスクールを無料体験で始める


まとめ

自作関数を使うことでIPアドレスを表示する事ができました。
普段使わないIPv6のアドレスや、気にする事の少ないグローバルIPアドレスもチェックできます。

パソコンに詳しくない人でも、この自作関数の入ったExcelがあればすぐにIPアドレスを確認できるので活用してみてください。

タイトルとURLをコピーしました