Excel 当文件存在时给出运行时9的Open方法(Dir(file\u string)起作用) 将保存路径设置为字符串 将文件设置为字符串 将wb设置为工作簿 '字符串设置省略 如果不是Dir(保存路径和数据文件)”,则 MsgBox“找不到该文件。” 如果结束 设置wb=工作簿(保存路径和数据文件) wb.打开 '工作簿(保存路径和数据文件)。打开也失败

Excel 当文件存在时给出运行时9的Open方法(Dir(file\u string)起作用) 将保存路径设置为字符串 将文件设置为字符串 将wb设置为工作簿 '字符串设置省略 如果不是Dir(保存路径和数据文件)”,则 MsgBox“找不到该文件。” 如果结束 设置wb=工作簿(保存路径和数据文件) wb.打开 '工作簿(保存路径和数据文件)。打开也失败,excel,vba,Excel,Vba,我得到一个运行时错误9,尽管Dir()没有引发messagebox。我可以将连接的字符串复制并粘贴到Windows资源管理器栏中,excel文件将打开,因此该文件肯定存在 有什么想法吗?我建议主要在if条件下将代码更改为: Dim savepath as String Dim dfile as String Dim wb as Workbook 'strings setting omitted If Not Dir(savepath & dfile) <> "" Then

我得到一个运行时错误9,尽管Dir()没有引发messagebox。我可以将连接的字符串复制并粘贴到Windows资源管理器栏中,excel文件将打开,因此该文件肯定存在


有什么想法吗?

我建议主要在if条件下将代码更改为:

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
通过这种方式,您还可以确保,
Open
仅在文件实际存在时发生,我认为将正面的案例放在顶部,将错误放在底部更具可读性

你也可以写

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
如果Dir(保存路径和数据文件)“,则

但是对于代码的快速简要回顾,像
NOT fn()“
这样的东西是不容易理解的

工作簿
只包括打开的工作簿。要打开工作簿,请使用
工作簿。打开(路径文件)


为什么要忽略字符串设置?我们如何知道这些是否正确?工作簿集合只包括打开的工作簿。
wb.open
在VBA中不是一个东西
If Dir(savepath & dfile) <> "" Then
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