2015-05-26 27 views
3

我有一個通過主文件中的VBA代碼相互交互的excel文件的目錄。何時在工作簿名稱中需要擴展名?

我以前從來沒有遇到過這個問題,但是在複製整個目錄對副本進行一些開發工作(將原始文件保留在不同位置)之後,我遇到了「下標超出範圍「引用工作簿時出現問題。

例如,一切都運行得很好以前與這行代碼(沒有在實際的代碼已被更改):

ScheduleLocation = Workbooks("Master Schedule").Path 
:現在拋出一個錯誤(從未使用過)

代碼

但是,此行現在會引發錯誤。如果我將「主計劃」替換爲「主計劃.xlsm」,一切都可以再次運作。我以前遇到過這個問題,但我從來沒有能夠指出問題的根源。

ScheduleLocation = Workbooks("Master Schedule.xlsm").Path 

因此我的問題:這是爲什麼不拋出一個錯誤

碼?爲什麼這個名字(沒有擴展名)有時不夠,有時候不會?

+0

[工作簿集合](https://msdn.microsoft.com/en-us/library/office/aa224505(v = office.11​​).aspx)並沒有真正解釋這一點,實際上使用示例有和沒有擴展名;唯一的區別是沒有例子已經打開。是否有機會命名歧義(一個Master Schedule.xlsm和一個Master Schedule.xla也許)? – Jeeped

+5

http://www.cpearson.com/excel/fileextensions.aspx –

+0

@TimWilliams有趣。我發生在同一個鏈接上。什麼可能導致Windows中的此設置更改?我只是將整個目錄複製到不同的位置來完成一些開發工作,並且開始拋出錯誤! –

回答

0

你有沒有在Windows資源管理器中打開「顯示已知文件類型的文件擴展名」? 嘗試使用隱藏和可見的擴展名運行代碼。

將工作簿分配給打開的變量是一種很好的做法。

Dim wbInput as Workbook 
Set wbInput = Workbooks.open ("C:\Master Schedule.xslx") 

現在,您可以在不關心擴展系統設置的情況下處理變量。

相關問題