Excel 在同一代码中使用不同的工作簿
在代码中引用不同的工作簿时,我一直使用“Set workbook.Open” 例如:Excel 在同一代码中使用不同的工作簿,excel,vba,Excel,Vba,在代码中引用不同的工作簿时,我一直使用“Set workbook.Open” 例如: `Dim wbname1 as Workbook Dim wbname2 as Workbook 'code which refers to wbname1 Set wbname1 = Workbooks.Open("path\filename") 'code which refers to wbname2 Set wbname2 = Workbooks.Open("path\filename")` `
`Dim wbname1 as Workbook
Dim wbname2 as Workbook
'code which refers to wbname1
Set wbname1 = Workbooks.Open("path\filename")
'code which refers to wbname2
Set wbname2 = Workbooks.Open("path\filename")`
` 'code which refers to wbname1
Set wbname1 = Workbooks.Open("path\filename")
wbname1.Close True
'code which refers to wbname2
Set wbname2 = Workbooks.Open("path\filename")
'code which refers again to wbname1
Set wbname1 = Workbooks.Open("path\filename")`
这有时很不方便,因为为了再次引用以前的工作簿,我必须关闭工作簿并重新打开它
例如:
`Dim wbname1 as Workbook
Dim wbname2 as Workbook
'code which refers to wbname1
Set wbname1 = Workbooks.Open("path\filename")
'code which refers to wbname2
Set wbname2 = Workbooks.Open("path\filename")`
` 'code which refers to wbname1
Set wbname1 = Workbooks.Open("path\filename")
wbname1.Close True
'code which refers to wbname2
Set wbname2 = Workbooks.Open("path\filename")
'code which refers again to wbname1
Set wbname1 = Workbooks.Open("path\filename")`
我必须解决这个问题,尤其是在循环中使用不同的工作簿时
有没有比使用更简单的方法来引用不同的工作簿
Set工作簿.Open()
您在这里声明了一个变量,类型为Workbook
。当您使用Set
关键字时,您正在为变量分配一个引用
这里,调用Excel.Application.Workbooks.Open
,返回引用。Excel对象模型中的一个函数,如果操作成功,该函数将打开工作簿并返回对其打开的工作簿的引用
这有时很不方便,因为为了再次引用以前的工作簿,我必须关闭工作簿并重新打开它
一点也不您已经拥有两本工作簿的引用,您需要做的就是使用它们
您只需
工作簿。关闭工作簿时打开
。如果它已经打开,您可以编写Set wbname1=Workbooks(“myWB.xlsx”)
,也就是说,一旦打开它,它将始终设置为您指定的变量名,而无需关闭和重新打开它。处理完毕后,请关闭它。我不确定我是否理解您的问题。如果您正在对工作簿进行操作,则只需在完成操作后将其关闭即可。如果您需要在任何时候打开多个工作簿,只需使用数组或其他方法跟踪即可。但是在你用完它们之后就把它们关上。把它打开,直到你用完为止。
Set book1 = Workbooks.Open("path\filename1")
Set book2 = Workbooks.Open("path\filename2")
'work with book1
book1.Sheets(1).Range("A1") = "Hello"
'work with book2
book2.Sheets(1).Range("A1") = "World!"
'all done, clean up now:
book1.Close
book2.Close