Workbooks.Open方法在文件存在时给出运行时间9(Dir(file_string)工作)

时间:2015-04-02 21:00:07

标签: excel-vba vba excel

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文件,因此文件肯定存在。

有什么想法吗?

2 个答案:

答案 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() <> ""的内容并不可理解