
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サーブレットコンテキストの意...
-
GridViewに行追加するには?
-
VB.NETでのnothing の意義について
-
String型からlong型への変換は...
-
VB2005でADDとINSERTの違いは?
-
ピクチャーボックスに点を打つ...
-
VBAでの[]
-
drawStringの座標について
-
「タイプ初期化子が例外をスロ...
-
eclipse-Tomcatでのデバッグに...
-
関数内の変数に<summary>コメン...
-
エクセルVBAで、条件に一致する...
-
中学のクラス数
-
javascriptからjavaを呼び出したい
-
【sendkeysメソッドが動かずに...
-
Excelで =EMBED("Acrobat Docu...
-
引数で日付を2つ与え、その間の...
-
JavaScriptからJAVAクラスを呼...
-
UMLのクラス図はmain()も含むん...
-
リフレクション
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dispose()は、どんな時に使うの...
-
VB.NETでのnothing の意義について
-
サーブレットコンテキストの意...
-
エクセルVBA 画像を貼り付ける...
-
Excel VBA 定数にオブジェクト...
-
VB.netでメソッドからコントロ...
-
servletからjspへオブジェクト...
-
ピクチャーボックスに点を打つ...
-
C#で親にイベントを投げる方法
-
VB6.0にて、ワールド変換(ピク...
-
VBAでの[]
-
C#のクラスで値渡しをする
-
JSPでのArrayListの表示につい...
-
Vba ListViewの行挿入に関して...
-
String型からlong型への変換は...
-
Javaでブラウザ判定
-
[ASP.NET]DropDownListのDB連携...
-
getHeigth,getWidthについて
-
Objectクラスのオブジェクトを...
-
エクセルVBA/SpecialCellsで特...
おすすめ情報