Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5363 / 13644 ツリー ←次へ | 前へ→

【50622】端末のIPアドレスとサブネットマスクを知るには? row 07/8/5(日) 17:16 質問[未読]
【50623】Re:端末のIPアドレスとサブネットマスク... かみちゃん 07/8/5(日) 17:32 発言[未読]
【50624】Re:端末のIPアドレスとサブネットマスク... row 07/8/5(日) 17:53 お礼[未読]
【51280】Re:端末のIPアドレスとサブネットマスク... row 07/9/8(土) 18:51 質問[未読]

【50622】端末のIPアドレスとサブネットマスクを...
質問  row  - 07/8/5(日) 17:16 -

引用なし
パスワード
   ノートパソコンにて、様々な事務所のLANに接続する為に
IPアドレスとサブネットマスクを変更する必要があります。

しかし、数箇所の設定内容を記録して設定変更する事さえ
出来ない社員がいる為に、マクロにて端末のIPアドレスを
記録しておき、移動した事務所にて事前に記録した
IPアドレスに書き換えるという事を考えました。

その為に、IPアドレスを取得しようと奮闘しているのですが
壁に当たって動けないので、教えていただきたいと思います。

x = Shell("ipconfig.exe", 1)
MsgBox x

いま、このようにして 端末のIPアドレスを表示しようと
しているのですが、
毎回、違う数値が表示されます。

これを、どのようにすれば
IPアドレスや サブネットマスクが表示されるのでしょうか?

【50623】Re:端末のIPアドレスとサブネットマス...
発言  かみちゃん  - 07/8/5(日) 17:32 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> IPアドレスを取得しよう

IPアドレスを取得して、何がしたいのか、今ひとつよくわかりませんが、
他の掲示板の過去ログで申し訳ありませんが、以下のものは、参考になりませんか?
(「VBA IPアドレス 取得」でWeb検索すると出てきました。)
http://www2.moug.net/bbs/exvba/20070525000027.htm
(先頭4文字は、全角文字になっていますので、半角になっていますので注意してください。)

なお、上記過去ログは、約3ヶ月で削除されますので、解決されたら、どのような
形で解決したかをここで教えていただけると幸いです。

【50624】Re:端末のIPアドレスとサブネットマス...
お礼  row  - 07/8/5(日) 17:53 -

引用なし
パスワード
   かみちゃん様、早速の回答ありがとうございます。

>IPアドレスを取得して、何がしたいのか、今ひとつよくわかりませんが、

説明不足で申し訳ありません。
ネットワークアダプタの設定情報をエクセルに記録し、
また、エクセルに記録した情報を簡単に、ネットワークアダプタに
設定したいのが、目的です。


>他の掲示板の過去ログで申し訳ありませんが、以下のものは、参考になりませんか?
>(「VBA IPアドレス 取得」でWeb検索すると出てきました。)
>http://www2.moug.net/bbs/exvba/20070525000027.htm

おっしゃるサイトを拝見致しまして、以下のコードで
実行しました。

Private Sub CommandButton1_Click()

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colAdapters = objWMIService.ExecQuery _
  ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

n = 1


For Each objAdapter In colAdapters
  MsgBox "Network Adapter " & n
  MsgBox "================="
  MsgBox " Description: " & objAdapter.Description

  MsgBox " Physical (MAC) address: " & objAdapter.MACAddress
  MsgBox " Host name:       " & objAdapter.DNSHostName

  If Not IsNull(objAdapter.IPAddress) Then
   For i = 0 To UBound(objAdapter.IPAddress)
     MsgBox " IP address:       " & objAdapter.IPAddress(i)
   Next
  End If

  If Not IsNull(objAdapter.IPSubnet) Then
   For i = 0 To UBound(objAdapter.IPSubnet)
     MsgBox " Subnet:         " & objAdapter.IPSubnet(i)
   Next
  End If

  If Not IsNull(objAdapter.DefaultIPGateway) Then
   For i = 0 To UBound(objAdapter.DefaultIPGateway)
     MsgBox " Default gateway:    " & _
       objAdapter.DefaultIPGateway(i)
   Next
  End If

 
  MsgBox " DNS"
  MsgBox " ---"
  MsgBox "  DNS servers in search order:"

  If Not IsNull(objAdapter.DNSServerSearchOrder) Then
   For i = 0 To UBound(objAdapter.DNSServerSearchOrder)
     MsgBox "   " & objAdapter.DNSServerSearchOrder(i)
   Next
  End If

  MsgBox "  DNS domain: " & objAdapter.DNSDomain

  If Not IsNull(objAdapter.DNSDomainSuffixSearchOrder) Then
   For i = 0 To UBound(objAdapter.DNSDomainSuffixSearchOrder)
     MsgBox "  DNS suffix search list: " & _
       objAdapter.DNSDomainSuffixSearchOrder(i)
   Next
  End If
 MsgBox " DHCP"
  MsgBox " ----"
  MsgBox "  DHCP enabled:    " & objAdapter.DHCPEnabled
  MsgBox "  DHCP server:     " & objAdapter.DHCPServer

  If Not IsNull(objAdapter.DHCPLeaseObtained) Then
   utcLeaseObtained = objAdapter.DHCPLeaseObtained
   strLeaseObtained = WMIDateStringToDate(utcLeaseObtained)
  Else
   strLeaseObtained = ""
  End If
  MsgBox "  DHCP lease obtained: " & strLeaseObtained

  If Not IsNull(objAdapter.DHCPLeaseExpires) Then
   utcLeaseExpires = objAdapter.DHCPLeaseExpires
   strLeaseExpires = WMIDateStringToDate(utcLeaseExpires)
  Else
   strLeaseExpires = ""
  End If
  MsgBox "  DHCP lease expires: " & strLeaseExpires

  MsgBox " WINS"
  MsgBox " ----"
  MsgBox "  Primary WINS server:  " & objAdapter.WINSPrimaryServer
  MsgBox "  Secondary WINS server: " & objAdapter.WINSSecondaryServer

  n = n + 1

Next
End Sub

すると、目的のIPアドレスやサブネットマスクが
表示されました!

あとは、事前に記録したIPアドレスなどを端末に
設定するコードを書く作業がありますが、
ありがとうございます。

一応、WEB検索もしたのですが
なかなか出てこなかったのは、

エクセル IPアドレス 取得
として、検索していたのが原因のようでした。

【51280】Re:端末のIPアドレスとサブネットマス...
質問  row  - 07/9/8(土) 18:51 -

引用なし
パスワード
   IPアドレスの取得は、成功しましたが
VBAを使って、IPアドレスの設定は可能でしょうか?

取得のルーチンを参考に以下のように、作ってみました。

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colAdapters = objWMIService.ExecQuery _
  ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
Dim IPアドレス As Variant
Dim SUBネット As Variant
Dim デフォルトゲートウェイ As Variant
Dim IP区切 As Variant

IPアドレス = "126.98.120.245"
SUBネット = "255.255.255.240"
デフォルトゲートウェイ = "126.98.120.1"

n = 1
For Each objAdapter In colAdapters
  If Not IsNull(objAdapter.DefaultIPGateway) Then
   objAdapter.IPAddress(i) = IPアドレス
   objAdapter.IPSubnet(i) = SUBネット
   objAdapter.DefaultIPGateway(i) = デフォルトゲートウェイ
  End If
  n = n + 1
Next

IPアドレスは、例としてですが
VBAを使って設定したくとも
どうやっても出来ない状態です。

教えていただきたく、よろしくお願いいたします。

5363 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free