2014-09-19 64 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