[英]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.