プロが教えるわが家の防犯対策術!

VBAです。

http://oshiete.goo.ne.jp/qa/1318017.html
を参考に、現在パソコンに入ってるプリンタ名の一覧を取得したいのですが
*****************************************
Sub アクティブプリンターを取得する()

Set Win = CreateObject("Shell.Application")
For Each Obj_Item In Win.Namespace(4).Items
Debug.Print Obj_Item.Name
Next

End Sub
*****************************************
を実行すると、
「Win」と「Obj_Item」が
「変数が定義されていません。」というコンパイルエラーになってします。

なので、
*****************************************
Dim Win, Obj_Item As データ型
*****************************************
で、変数を宣言すればいいと思うのですが、どのデータ型で宣言すればいいのでしょうか?

ご回答よろしくお願いします。

A 回答 (1件)

As Object


でいいと思いますが、アーリーバインディングでするなら、
「Microsoft Shell Controls And Automation」を参照設定で設定して
Dim s As New Shell
Dim i As Shell32.FolderItem
For Each i In s.NameSpace(4).Items
Debug.Print i.Name
Next
のようにしてやればよいでしょう。
    • good
    • 0
この回答へのお礼

Dim Win, Obj_Item As Objectで、
変数を宣言したら
「Microsoft Shell Controls And Automation」を参照設定しなくてもできました!

環境はOS:win7、office2007だからですかね?
有難うございました。

お礼日時:2012/05/19 15:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!