2日悩みましたが、解決策が見つからないため質問させて頂きます。
現在、ExcelのVBAを使った表を作成しております。
編集者が誰なのかをはっきりさせるため、項目の新規追加・情報の削除を行った編集者のIPアドレスを履歴として残したいと思っています。(閲覧履歴は不要です。)
そのため、編集者PCのIPアドレスを取得してそれを履歴一覧に残したいのですが、この方法がわかりません。
いろいろと探しましたが、WMI(?)やWSH(?)等の、私の理解をはるかに超えるものしか見つからず困っております。
このようなことはできないのでしょうか?
もし可能であれば、教えて下さい。
環境は
OS:Windows XP
Excel2000です。
宜しくお願いします。
No.2ベストアンサー
- 回答日時:
取得したいアダプタのDefaultGatewayが判っているならWMIを使ったこんなのはどうでしょう。
1つのアダプタに複数のIPが割り当てられている場合等は考慮していません。
また、サンプルなので変数宣言やエラー処理も適当です。
Sub Sample()
strDefaultGateway = "192.168.50.254" '←DefaultGatewayがコレのIPを調べる
strIp = "該当無し"
Set objNic = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where (IPEnabled = TRUE)")
For Each oneNic In objNic
'DefaultGatewayの設定が無いNICは無視
If IsError(oneNic.DefaultIPGateway(0)) = False Then
strChk = oneNic.DefaultIPGateway(0)
If InStr(strChk, strDefaultGateway) > 0 Then
strIp = oneNic.ipaddress(0)
Exit For
End If
End If
Next
MsgBox "IPアドレス:" & strIp
End Sub
この回答への補足
ご回答ありがとうございます!
IPアドレスが正常に取得でき、デフォルトゲートウェイを指定するというのは、目からウロコです。
このコードですと、メッセージボックスに表示されることになりますが、これをセルに書き込むのはどうすれば良いのでしょうか?
初歩的な質問で申し訳ございません。
宜しくお願い致します。
No.4
- 回答日時:
No.2です。
>このコードですと、メッセージボックスに表示されることになりますが、これをセルに書き込むのはどうすれば良いのでしょうか?
サンプルコードでは、strIp と言う変数に文字列としてIPを入れていますので、たとえばA1セルにこのIPを入れたいのでしたら、Range("A1") = strIP でIPアドレスがセルに反映されます。
何度もありがとうございました!!
考えていた通りの結果を得ることができました。
またわからないことがありましたら、宜しくお願いします。
No.3
- 回答日時:
先程は、 ipconfig の結果をそのまま表示していましたが、
途中で、(3) に判定文を挿入し、IP Address だけを表示
するようにしました。
また、先程は、出力する項目ごとに改行していましたが、
(2) のように、特定のセルだけに出力しています。
最後の IP Address 情報だけ残せば良いということなので、
すべての IP Address 情報が上書き、上書きで表示されて
いくので、最後に表示された IP Address が残ることになります。
Sub Sample2()
Dim WSH, wExec, sCmd As String, Result As String, tmp, i As Long
Set WSH = CreateObject("WScript.Shell")
sCmd = "ipconfig " ''(1)
Set wExec = WSH.Exec("%ComSpec% /c " & sCmd)
Do While wExec.Status = 0
DoEvents
Loop
Result = wExec.StdOut.ReadAll
tmp = Split(Result, vbCrLf)
For i = 0 To UBound(tmp)
If InStr(tmp(i), "IP Address") > 0 Then ''(3)
Cells(20, 1) = tmp(i) ''(2)
End If
Next i
Set wExec = Nothing
Set WSH = Nothing
End Sub
No.1
- 回答日時:
一例です。
(1) のところで、 ipconfig コマンドを設定しています。
この ipconfig の実行結果を (2) のところで、セルに貼り付けています。
Sub Sample2()
Dim WSH, wExec, sCmd As String, Result As String, tmp, i As Long
Set WSH = CreateObject("WScript.Shell")
sCmd = "ipconfig " ''(1)
Set wExec = WSH.Exec("%ComSpec% /c " & sCmd)
Do While wExec.Status = 0
DoEvents
Loop
Result = wExec.StdOut.ReadAll
tmp = Split(Result, vbCrLf)
For i = 0 To UBound(tmp)
Cells(i + 1, 1) = tmp(i) ''(2)
Next i
Set wExec = Nothing
Set WSH = Nothing
End Sub
この回答への補足
早速のご回答ありがとうございます!
IPアドレスを無事に取得することができました!
しかし、思わぬ結果となり、引き続き教えて頂けないでしょうか。
当方、仮想のネットワークアダプタがインストールされており、
IPアドレスが3つ取得されてしまいます。
また、仮想のネットワークアダプタがインストールされていない
ユーザもいます。
できれば、他の言葉やスペースも削りたいです。
本当に必要なものは、最後のローカルアダプタ内の『192.168.50.18』の部分だけとなります。
ローカルアダプタは、常に最後に表示されるようです。
このような場合、どうにかなるものでしょうか?
引き続き、宜しくお願い致します。
"Windows IP Configuration
"
"
"Ethernet adapter VMware Network Adapter VMnet8:
"
"
" Connection-specific DNS Suffix . :
"
" IP Address. . . . . . . . . . . . : 192.168.153.1
"
" Subnet Mask . . . . . . . . . . . : 255.255.255.0
"
" Default Gateway . . . . . . . . . :
"
"
"Ethernet adapter VMware Network Adapter VMnet1:
"
"
" Connection-specific DNS Suffix . :
"
" IP Address. . . . . . . . . . . . : 192.168.32.1
"
" Subnet Mask . . . . . . . . . . . : 255.255.255.0
"
" Default Gateway . . . . . . . . . :
"
"
"Ethernet adapter ローカル エリア接続:
"
"
" Connection-specific DNS Suffix . :
"
" IP Address. . . . . . . . . . . . : 192.168.50.18 ←ここだけです。
"
" Subnet Mask . . . . . . . . . . . : 255.255.255.0
"
" Default Gateway . . . . . . . . . : 192.168.50.254
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- YouTube youtube動画再生について… 1 2022/04/08 04:24
- その他(コンピューター・テクノロジー) DHCPサーバーについて、、、。 職場のネットワーク環境で困っています。サーバーはWindows s 3 2023/01/04 10:15
- 固定IP MACアドレスはLAN内で相手を特定するアドレスですか? PCから監視カメラを閲覧するときに、セグメ 3 2022/07/23 09:04
- Excel(エクセル) MicroSoft Formsの共有について 2 2022/12/29 17:19
- その他(インターネット接続・インフラ) アプリ利用者を特定し、裁判に 2 2022/06/09 21:43
- Visual Basic(VBA) Access VBAから使用したExcelプロセスを閉じる方法について 4 2022/06/08 17:50
- Excel(エクセル) 送られてきたxlsxが編集できない 8 2022/09/22 14:05
- ツイキャス ツイキャスでアカウントロックされたとき、IPアドレスが自動取得で変更されても、PC端末が特定される? 1 2022/10/15 15:49
- Chrome(クローム) スプレッドシートの編集履歴について 以前は画像の○を付けたあたりに最終編集者と最終編集日が表示されて 1 2023/07/07 13:42
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
貼り付けで複数セルに貼り付けたい
-
Excelで数式内の文字色を一部だ...
-
エクセル オートフィルタで絞...
-
EXCEL VBA セルに既に入...
-
エクセル 足して割る
-
(Excel)数字記入セルの数値の後...
-
Excelでのコメント表示位置
-
【Excel】 セルの色での判断は...
-
対象セル内(複数)が埋まった...
-
エクセルの一つのセルに複数の...
-
セルをクリック⇒そのセルに入力...
-
複数のセルのいずれかに数字が...
-
エクセルの書式設定の表示形式...
-
Excel2003 の『コメント』の編...
-
エクセルの関数VLOOKUP...
-
エクセルのセルの枠を超えて文...
-
excelの特定のセルの隣のセル指...
-
セルに特定の色が付いていたら...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル 足して割る
-
【エクセル】IF関数 Aまたは...
-
エクセルで指定したセルのどれ...
-
Excelで数式内の文字色を一部だ...
-
Excelでのコメント表示位置
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
セルをクリック⇒そのセルに入力...
-
【Excel】 セルの色での判断は...
-
エクセルの一つのセルに複数の...
-
EXCEL VBA セルに既に入...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
excelのCOUNTIF関数で、『範囲=...
-
(Excel)数字記入セルの数値の後...
-
枠に収まらない文字を非表示に...
-
Excel2003 の『コメント』の編...
-
Excel 例A(1+9) のように番地の...
-
複数のセルのいずれかに数字が...
おすすめ情報