Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在同一代码中使用不同的工作簿_Excel_Vba - Fatal编程技术网

Excel 在同一代码中使用不同的工作簿

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")` `

在代码中引用不同的工作簿时,我一直使用“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")`
` '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