2014-09-19 63 views
0

我有wb1,wb2,wb3 .. wb10開放。如何遍歷特定工作簿?

我需要在wb1,wb5,wb6上執行一些命令。如果我使用workbooks集合,則它將遍歷所有工作簿。

For Each book In Workbooks 

另外,Application在VBScript中不可用。

如何循環訪問特定工作簿?

+0

你需要發佈更多的代碼,然後你有。不知道你如何引用應用程序或創建對象。 – Sorceri 2014-09-19 18:22:40

回答

1

兩種方式 1.轉到通過索引,如果你知道像訂購wordkbooks(0),wordkbooks(5)等 2.更一般的方式通過名字去

`for idx=0 to count 
if strcomp(workbook(idx).name,"wb1")=0 or strcomp(workbook(idx).name,"wb2")=0 then 
'execute some code 
end if 
next` 
3

工作簿的名稱可用於直接訪問它。例如:

objExcel.Workbooks("wb1").ActiveSheet.Cells(1, 1) = "This is in book 1" 
objExcel.Workbooks("wb2").ActiveSheet.Cells(1, 1) = "This is in book 2" 

而且,是的,Application在VBScript中不可用。但你可以自己創建它。它只是對Excel應用程序對象的引用。

Set Application = CreateObject("Excel.Application") 
2

爲了處理在一個循環中打開的工作簿的一個子集,你可以創建一個要處理並在循環這樣的限制處理工作簿的名稱的Dictionary

Set workbooksToProcess = CreateObject("Scripting.Dictionary") 
workbooksToProcess.Add "wb1", True 
workbooksToProcess.Add "wb5", True 
workbooksToProcess.Add "wb1", True 

For Each book In xl.Workbooks 
    If workbooksToProcess.Exists(book.Name) Then 
    ... 
    End If 
Next 

或創建一個名稱陣列,並像這樣處理工作簿:

workbooksToProcess = Array("wb1", "wb5", "wb6") 

For Each name In workbooksToProcess 
    Set book = xl.Workbooks(name) 
    ... 
Next 
+0

避免複雜的布爾表達式*和*處理循環問題。 – 2014-09-20 11:42:39