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文件,因此文件肯定存在。
有什么想法吗?
答案 0 :(得分: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
答案 1 :(得分:0)
我建议主要在if条件中将代码更改为:
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() <> ""
的内容并不可理解