簡體   English   中英

VBA Excel工作簿對象變量

[英]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.aspxWorkbooks集合僅包含當前打開的工作簿。 該錯誤只是告訴您,當前尚未打開所請求的工作簿。

您必須使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM