簡體   English   中英

Excel VBA在Workbooks.Open中引發緩存問題錯誤1004?

[英]Excel VBA throwing a cache issue error 1004 with Workbooks.Open?

我正在通過打開文件並使用.xlsm文件運行一系列代碼來運行vba代碼。 我正在使用以下代碼打開一個excel文件:

Dim sPath As String, sName As String

sPath = ThisWorkbook.Path & "\"
sName = Dir(sPath & "*cash*.xls?")

If sName <> "" Then
    With Workbooks.Open(sName)
        .Worksheets("Sheet1").Copy After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
        .Close SaveChanges:=False
        ActiveSheet.Name = "Cash & CC Sales"
    End With
End If

運行一系列代碼后,我使用SaveAs-以下代碼保存文件:

Dim sPath4 As String, datePath4 As String

datePath4 = Replace(Worksheets("Dashboard").Range("N2").Value, "/", "-")

sPath4 = ThisWorkbook.Path & "\Dashboard " & datePath4 & ".xls"

ActiveWorkbook.SaveAs Filename:=sPath4, FileFormat:=xlNormal

End Sub

這是第一次工作。 重新打開.xlsm文件后過一會兒再次運行代碼時,拋出1004錯誤,提示它找不到文件“ Cash Listing.xls”,但是,我從未真正將其定義為該文件名在vba代碼中,而是使用“ cash * .xls?”,這使我相信存在某種緩存問題? 這使得它嘗試打開一個較舊的文件。 而且,奇怪的是,實際上確實存在“ Cash Listing.xls”。

是否有任何想法為何會出現此錯誤以及如何發生此錯誤以及如何規避此錯誤? 該代碼首次運行並運行,此后引發錯誤,而我可以解決的唯一方法是創建一個新的.xlsm文件,然后將代碼復制到該文件中並再次運行。

使用您提供的代碼,我設法在本地重新創建錯誤。 看來,盡管行sName = Dir(sPath & "*cash*.xls?") ),在您的情況下,您的sName -string仍僅包含文件名(而不包含路徑): Cash Listing.xls 如果我正確閱讀了文檔,則Dir函數的行為將如此,因為它返回的字符串表示與指定模式或文件屬性 MSDN參考 匹配的文件,目錄或文件夾的名稱

如果將代碼更改為在Workbooks.Open行中包含sPath,則應該可以解決此問題。 (至少在我本地復制時如此):

Dim sPath As String, sName As String

sPath = ThisWorkbook.Path & "\"
sName = Dir(sPath & "*cash*.xls?")

If sName <> "" Then
    With Workbooks.Open(sPath & sName)
        .Worksheets("Sheet1").Copy After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
        .Close SaveChanges:=False
        ActiveSheet.Name = "Cash & CC Sales"
    End With
End If

對我來說,目前尚不清楚為什么Workbooks.Open(sName)在創建xlsm文件后就可以正常工作,但是如果上述解決方案可以解決您的問題,那么就足夠了:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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