[[20181115095412]] 『「ネットワーク上のマシン名取得」[とっつぃ] に』(アラ古希) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『「ネットワーク上のマシン名取得」[とっつぃ] について』(アラ古希)

投稿
[[20090529144623]] 『ネットワーク上のマシン名取得』(とっつぃ) 
について...
名前と一緒にIPv4アドレスを取得するコマンドをご教示ください。

< 使用 Excel:Excel2013、使用 OS:Windows10 >


Excelは表計算アプリであり、ネットワーク云々の標準命令はありません。 リンク先は、ネットワーク参照機能を利用したものであり、IPアドレスは得られないかと思います。

なので、APIを使うとか、外部オブジェクトを使うとか、コマンドプロンプト(またはPowerShell)を使うとか、いずれにせよ、自力で調べられないようなら手を出すべきではない方法を使う必要があるでしょう。

とりあえず、コマンドプロンプトを起動して PING コマンドを使い、PC名からIPアドレスを得るのが簡単かと思います。 -a オプションを付ければ、逆も可能です。 そして、コマンドプロンプトならExcelからもShell関数等で実行できるので、結果をリダイレクションし、これをExcelで得るようなコーディングをすると良いでしょう。
(???) 2018/11/15(木) 10:14


レスありがとうございます。
MS-DOS他調べる方法は知っていますし、自分ではできるのですが、「shell関数等で実行できるので、結果をリダイレクションし、これをExcelで得る」ようなコーディングができないのです。 サンプルを少し書き換えて
Set WSH = CreateObject("WScript.Shell") ''(1)
sCmd = "nbtstat -A 192.168.10.202" ’※社内のNASのアドレス
とやってみても結果は空白でした。もちろんMS-DOSコマンドからはちゃんと名前は帰ってきます。
ネットワークやVBAの知識が全くない社員でもEXCELだけで情報のやり取りができるような仕組みを残してやりたいとおもって悩んでします。
宜しくお願いします。

(アラ古希) 2018/11/15(木) 11:53


汎用的なコマンドプロンプトを使ったコード例を書きますので、応用してみてください。 A列にPC名またはIPアドレスを列挙しておいてから実行すると、B列に対応するIPアドレスまたはPC名を代入するようにしています。
(Shell関数でないのは、コマンドの完了同期を取るためのロジックを書くのが面倒だったためです)
 Sub test()
    Dim WSH As Object
    Dim vw As Variant
    Dim iw1 As Long
    Dim iw2 As Long
    Dim i As Long

    Set WSH = CreateObject("WScript.Shell")

    For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
        vw = Split(WSH.Exec("CMD /C PING -a -n 1 " & Cells(i, "A").Text).StdOut().ReadAll(), vbNewLine)
        iw1 = InStr(vw(1), "[")
        iw2 = InStr(vw(1), "]")
        If 0 < iw1 Then
            Cells(i, "B").Value = Mid(vw(1), iw1 + 1, iw2 - iw1 - 1)
            If Cells(i, "A").Value = Cells(i, "B").Value Then
                Cells(i, "B").Value = Left(vw(1), iw1 - 2)
            End If
        End If
    Next i
 End Sub
(???) 2018/11/15(木) 11:58

Shell関数を使ったコードの場合は、コマンドの後ろに " > ファイル名" とします。 実行結果をファイルに書かせる訳ですね。
ところがこうすると、書き終わりを待たずにShell関数は帰ってきてしまうので、ファイルの中身が書かれたかとか、一定時間経過したとかを待って、ファイルの中身を参照しなければならない訳ですよ。
(???) 2018/11/15(木) 12:02

うまくゆきました。感謝感激!!
これで何とか引退しても呼び出されなくてすむかもしれません?!
いつまでへなちょこVBAを使ってくれかわかりませんが。
また行き詰まったらご相談します。
ありがとうございました。

(アラ古希) 2018/11/15(木) 13:36


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.