【问题标题】:working with different workbooks within the same code在同一代码中使用不同的工作簿
【发布时间】:2016-03-05 05:22:28
【问题描述】:

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

我不得不解决这个问题,尤其是在循环中使用不同的工作簿时。

有没有比使用更简单的方法来引用不同的工作簿

Set Workbooks.Open()

【问题讨论】:

  • 您只需在工作簿关闭时Workbooks.Open。如果它已经打开,你可以写Set wbname1 = Workbooks("myWB.xlsx"),也就是说,一旦你打开它,它总是会设置你给它的变量名,不需要关闭并重新打开它。完成处理后关闭它。
  • 不确定我是否理解您的问题。如果您在工作簿上进行操作,则在完成后将其关闭。如果您需要在任何时候打开多个工作簿,只需使用数组或其他东西来跟踪它。但是在你完成它们之后关闭它们。保持打开状态,直到完成。

标签: excel vba


【解决方案1】:
Dim book1 as Workbook

您在这里声明了一个变量,类型为Workbook。当您使用Set 关键字时,您分配变量为引用

Set book1 = Workbooks.Open("path\filename1")`

这里引用作为调用Excel.Application.Workbooks.Open结果返回,这是一个Excel 对象模型中的函数,它打开一个工作簿并返回一个引用到它打开的工作簿,如果操作成功的话。

这有时很不方便,因为为了再次引用以前的工作簿,我必须关闭工作簿并重新打开它。

一点也不。 您已经拥有对两个工作簿的引用,您所需要做的就是,使用它们

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多