[英]VBA Excel Workbooks Object Variable
我正在尝试设置两个工作簿变量-这是我的代码的前四行:
Dim wb1 As Workbook
Dim wb2 As Workbook
Set wb1 = Workbooks("C:\Users\ShaneM\Documents\File1.xlsx")
Set wb2 = Workbooks("C:\Users\ShaneM\Documents\Computer Languages\VBA\File2.xlsm")
我在第3行上遇到的错误是:
Runtime error 9 - Subscript Out Of Range
这些文件肯定存在于这些位置。 显然有很多事情要做。 请问我做错了什么?
谢谢。
.Workbooks()
是在当前Application
对象中打开的工作簿对象的集合(您没有在代码中编写该代码,但是默认情况下会调用它)。
.Workbooks()
集合out of range
因为该工作簿当前未在您的Application
打开; 实际上,如果您想使用工作簿,则需要将其打开到当前的Excel Application
实例中:
Set wb1 = Workbooks.Open("C:\...")
但是,这将导致工作簿显示,因为您正在当前应用程序中打开,遗憾的是无法在Visible=False
模式下打开它。 但是,您可能希望使用设置为Visible = False
的新Excel实例,因此您将能够在不实际显示内容的情况下读取其内容。 这意味着,在代码中:
Set excObj = CreateObject("Excel.Application")
excObj.Visible = False
Set wb1 = excObj.Workbooks.Open("C:\...")
请注意,我指定使用excObj
打开工作簿,它不是当前的Application
而是另一个故意设置为Visible = False
的相同类型的对象。
根据https://msdn.microsoft.com/zh-cn/library/office/ff841074.aspx , Workbooks
集合仅包含当前打开的工作簿。 该错误只是告诉您,当前尚未打开所请求的工作簿。
您必须使用Workbooks.Open方法:
Set wb1 = Workbooks.Open("C:\Users\ShaneM\Documents\File1.xlsx")
当已经打开工作簿时,您可以使用属性Workbooks.Item来获取对象(请注意,您可以省略.Item
,因为它是Workbooks
集合的默认属性)。
Set wb1 = Workbooks("File1.xlsx")
还要注意,打开的工作簿的名称在同一应用程序中必须唯一。 也就是说,下将无法正常工作:
Set wb1 = Workbooks.Open("C:\Folder1\File.xlsx")
Set wb2 = Workbooks.Open("C:\Folder2\File.xlsx")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.