WshNetworkでのコンピュータ名とドメイン名とログインユーザ名の取得
単にドメイン名とログインユーザ名を調べるだけであれば、コマンドプロンプトで「whoami」と入力+Enterキーを押せば「ドメイン名 \ ログインユーザ名」の形式で出力されてすぐに分かります。
同様にVBAでもWshNetworkクラスを使うとコンピュータ名とドメイン名とログインユーザ名を取得することが出来ます。
参照設定
WshNetworkはCreateObject関数を利用してこのような書き方を紹介されることが多いと思います。
1 2 |
Dim obj Set obj = CreateObject("WScript.Network") |
しかしこの書き方では利用できるプロパティやメソッドを候補表示できません。しかし参照設定を行えばプロパティやメソッドを表示することが可能です。
WshNetworkの参照設定は、VBA画面→ツールメニュー→参照設定で「Windows Script Host Object Model」を選択します。これでWshNetworkクラスを利用できるようになります。
以下はWshNetworkクラスのインスタンス変数の作成サンプルです。書き方は2通りあります。どちらでもいいです。1つ目のように1行で書いてもいいですし、2つ目のように変数定義とSetを別に書いてもいいです。
1 |
Dim oNetwork As New IWshRuntimeLibrary.WshNetwork |
1 2 |
Dim oNetwork As IWshRuntimeLibrary.WshNetwork Set oNetwork = New IWshRuntimeLibrary.WshNetwork |
以降のサンプルコードは参照設定を行った場合の書き方になります。
構文
1 2 3 |
Property ComputerName As String Property UserDomain As String Property UserName As String |
それぞれWshNetworkクラスのインスタンス変数のプロパティです。内容はプロパティの名前の通りですね。
サンプルコード
コンピュータ名、ドメイン名、ユーザ名を取得し、それぞれをイミディエイトウィンドウに出力するサンプルです。
1 2 3 4 5 6 7 |
Sub WshNetworkPropertyTest() Dim oNetwork As New IWshRuntimeLibrary.WshNetwork Debug.Print oNetwork.ComputerName Debug.Print oNetwork.UserDomain Debug.Print oNetwork.UserName End Sub |