1

我在 Access 2010 中有一些运行查询并将结果导出到 Excel 中的列的 VBA。这里的目标是,当用户按下所需的按钮时,会打开一个 Excel 工作簿,如果它不存在,则创建它。创建新工作簿时,VBA 会按预期执行。我遇到的问题是工作簿已经存在。

因此,在我创建了一组我的 excel 应用程序对象后,我尝试打开工作簿。当它不存在时,会发生 1004 错误,并且我有以下错误处理程序:

    Select Case Err
    Case 1004   'Workbook doesn't exist, make it
    xl.Workbooks.Add
    Set wb = xl.ActiveWorkbook
    wb.SaveAs strWorkBook

    Resume Next

当用户打开现有工作簿时,系统会提示他们覆盖是、否、取消选项。除了 yes 之外的任何响应都会生成 1004 错误(似乎奇怪的 2 个不同的错误具有相同的代码 #)。我只是在寻找解决这个问题的方法,无论是我编写一些 VBA 来自动接受还是我有其他东西可以让用户说不/取消。最简单的是首选,我只是不希望它们出现错误。

4

1 回答 1

1

您不需要依赖错误处理来处理 Excel 文件是否存在。用于Dir()检查是否存在,并据此打开或创建。

If Len(Dir(strFullPathToWorkbook)) > 0 Then
    ' open the workbook '
Else
    ' create the workbook '
End If

wb.SaveAs strWorkBook如果这是一个新工作簿, 请使用。

wb.Save如果它是现有工作簿,请使用。

于 2012-08-09T16:49:15.217 回答