WSHについて教えてください。
コレクションの最初の要素(オブジェクト)のプロパティを参照したいのですが、やり方がわかりません。
例えば以下のようなWMIのクエリの結果のコレクションの要素(オブジェクト)は1つだけしかありません。
※ネットワークドライブ V: の情報を得る
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkConnection where LocalName=""V:""",,48)
なのにわざわざ
For Each objItem in colItems
Wscript.Echo "LocalName: " & objItem.LocalName
Next
のような表現をするのは、いかにも大変です。
For Eachを使わずに、上記の例での colItems の最初の要素(オブジェクト)の LocalName プロパティを取り出すには
どのようにコーディングすればいいのでしょうか?
No.3ベストアンサー
- 回答日時:
#2 さんと同様、Excel VBA にて Microsoft WMI Scripting V1.2 Library を使ってみた。
Dim locatorObject As WbemScripting.SWbemLocator
Dim serviceObject As WbemScripting.SWbemServices
Set locatorObject = New WbemScripting.SWbemLocator
Set serviceObject = locatorObject.ConnectServer
serviceObject.Security_.ImpersonationLevel = 3
Dim connections As WbemScripting.SWbemObjectSet
Dim connection As WbemScripting.SWbemObject
Set connections = serviceObject.ExecQuery("SELECT * FROM Win32_NetworkConnection WHERE LocalName='V:'")
Debug.Print connections.Item("\\ホスト名\root\cimv2:Win32_NetworkConnection.Name=""\\\\サーバ名\\共有名 (V:)""").LocalName
結果
こんな書き方しても誰も得しない。
SWbemServiceObject の Get メソッドなら SWbemObject 単体を得られるが、書き方はこうなる。
Dim connection As WbemScripting.SWbemObject
Set connection = serviceObject.Get("\\SSD008\root\cimv2:Win32_NetworkConnection.Name=""\\\\afs001\\Home (W:)""")
<MSDN WMI スクリプト入門 : 第 3 部>
http://msdn.microsoft.com/ja-jp/library/ms974547 …
ご回答ありがとうございます。
おかげさまで、目的を達することができました!
VBScriptでは、以下のようにしました。
理屈はちっともわかりませんが、後々教えていただいたリンクを熟読して、理解したいと思います!
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2:Win32_NetworkConnection.Name=""\\\\ComputerName\\ShareName (V:)""")
Wscript.Echo objWMIService.LocalName
本当に助かりました。ありがとうございました!
No.2
- 回答日時:
Excel の VBA にて
Microsoft WMI Scripting V1.2 Library
を参照設定に追加してみたところ、
colItems.Item( strObjectPath As String, [iFlags As Long] )
というメソッドがあることがわかりました。
おそらく、iFlags は省略可能だと思います。
適切な strObjectPath を与えれば、For Each を使用しなくても直接 objItem を取得できるのだと思いますが、残念ながら strObjectPath にどういう文字列を与えればよいのかまではわかりませんでした。
ご回答ありがとうございました。
temtecomai2さんのご返信で、無事解決することができました。
今後ともよろしくお願いいたします。
No.1
- 回答日時:
試していないのですが、
colItems.Items(1).LocalName
ではダメでしょうか。
もしかすると
colItems.Items(0).LocalName
かも。
この回答への補足
回答とてもありがとうございます!
実行すると以下のようなメッセージが表示されてしまいます。
回答をいただいたときに、おおお!なるほど!!と思ったのですが・・・。
エラーの通り、WMIのコレクション(colItems)にはItemsプロパティは存在しないようです。
エラー: オブジェクトでサポートされていないプロパティまたはメソッドです。:'colItems.Items'
コード: 800A01B6
ソース: Microsoft VBScript 実行時エラー
取り急ぎ、報告まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- その他(プログラミング・Web制作) pythonのmap、結果の利用は1度だけ? 5 2022/06/11 12:33
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- その他(プログラミング・Web制作) pythonでDBのカラム名で取得したオブジェクトの値を表示したい 1 2022/05/13 03:41
- Visual Basic(VBA) 配列にしたセル範囲でのコメントがあるかどうかを取得するコードの書き方 2 2022/09/17 05:09
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA 画像を貼り付ける...
-
VB.netでメソッドからコントロ...
-
Dispose()は、どんな時に使うの...
-
C#のクラスで値渡しをする
-
VB.NETでのnothing の意義について
-
Vba ListViewの行挿入に関して...
-
VBAでの[]
-
サーブレットコンテキストの意...
-
WSHについて教えてください。
-
オブジェクトの参照渡しについて
-
C# トランザクション処理
-
C#で親にイベントを投げる方法
-
Excel VBA 定数にオブジェクト...
-
SocketでXMLオブジェクトを送信...
-
ADOのOPENで実行時エラー
-
servletからjspへオブジェクト...
-
System.Collections.SortedList
-
getParameter()について
-
String型からlong型への変換は...
-
MessageBox.Show(Me,…の「Me」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サーブレットコンテキストの意...
-
エクセルVBA 画像を貼り付ける...
-
servletからjspへオブジェクト...
-
VB.netでメソッドからコントロ...
-
JSPでのArrayListの表示につい...
-
VBAでの[]
-
javaで、、、
-
C#のクラスで値渡しをする
-
Excel VBA 定数にオブジェクト...
-
Dispose()は、どんな時に使うの...
-
Vba ListViewの行挿入に関して...
-
Javaでブラウザ判定
-
getParameter()について
-
VB.NETでのnothing の意義について
-
PrintFormを使用してのプリント
-
ピクチャーボックスに点を打つ...
-
String型からlong型への変換は...
-
drawStringの座標について
-
エクセルVBA/SpecialCellsで特...
-
GridViewに行追加するには?
おすすめ情報