| 
    
     |  | ▼注意報 さん: こんばんは。
 >初めまして。
 >2つのエクセルのファイル(a.xls b.xls)を開き、
 >一方から他方の全シート名を取得したいのですが、
 >
 >ws <- ワークシート
 >for each ws in worksheets
 >  msgbox ws.name
 >next ws
 >
 >だと、アクティブな方のワークシート名しか取得できません。
 >現在は、(aがアクティブなとき)、
 >
 >workbooks("b.xls").worksheets(1).select
 >
 >などとしてシート名を取得していますが、不細工で仕方ありません。
 以下のコードは、アクティブなブック以外のブックのブック名と全ワークシート名を
 イミディエイトウインドウ(VBEでCtrl+Gを押せば表示されます)に
 表示するものです。
 '===========================================================
 Sub test()
 For Each wk In Workbooks
 If Not wk Is ActiveWorkbook Then
 Debug.Print wk.Name
 For Each sht In wk.Worksheets
 Debug.Print Space$(3) & sht.Name
 Next
 End If
 Next
 End Sub
 
 もっともブックがb.xls限定なら、
 
 For Each sht In workbooks("b.xls").Worksheets
 Debug.Print Space$(3) & sht.Name
 Next
 
 でも良いと思いますが・・・。
 確認してみて下さい。
 
 |  |