2015-04-02 59 views
1
Dim savepath as String 
Dim dfile as String 
Dim wb as Workbook 

'strings setting omitted 

If Not Dir(savepath & dfile) <> "" Then 
    MsgBox "Cannot find the file." 
End If 

Set wb = Workbooks(savepath & dfile) 
wb.Open 
'Workbooks(savepath & dfile).Open also fails 

儘管Dir()沒有提高消息框,但我得到運行時錯誤9。我可以將連接字符串複製並粘貼到Windows資源管理器欄中,並打開excel文件,因此文件當然存在。Workbooks.Open方法在文件存在時給出運行時間9(Dir(file_string)有效)

任何想法?

+0

爲什麼要省略字符串設置?我們如何知道你是否有這些正確的? – Davesexcel 2015-04-02 21:20:45

+0

Workbooks集合只包含* open *工作簿。 – 2015-04-02 21:22:41

回答

0

我會建議主要是改變你的代碼中,如果條件:

Dim savepath as String 
Dim dfile as String 
Dim wb as Workbook 

'strings setting omitted 

strFilename = Dir(savepath & dfile) 
If Len(strFilename) > 0 Then 
    Set wb = Workbooks.Open(savepath & dfile) 
Else 
    MsgBox "Cannot find the file " & dfile & " in " & savepath & "." 
End If 

這種方式,您還保證,當文件確實存在Open只發生,我認爲把積極的情況下,在頂部和錯誤底部更具可讀性。

你也可以寫

If Dir(savepath & dfile) <> "" Then 

但對於代碼的快速簡要回顧,像NOT fn() <> ""是不是可以理解

+0

'wb.Open'不是VBA中的東西 – 2015-04-02 21:27:11

+0

複製粘貼錯誤,謝謝,更正 – 2015-04-02 21:47:18

2

Workbooks僅包括打開的工作簿。打開您使用的工作簿Workbooks.Open(pathToFile)

Dim savepath as String 
Dim dfile as String 
Dim wb as Workbook 

'strings setting omitted 

If Dir(savepath & dfile) = "" Then 
     MsgBox "Cannot find the file." 
Else 
     Set wb = Workbooks.Open(savepath & dfile) 
End If 
相關問題