Docmd.OutputTo Excel - “Microsoft Access无法将输出数据保存到您选择的文件”

时间:2015-11-24 20:07:10

标签: vba ms-access access-vba ms-access-2007

我使用Docmd.Output将一些数据导出到excel。

FileName = "CategoryBreakdown.xls" DoCmd.OutputTo acOutputStoredProcedure, sqlSP, acFormatXLS, FileName, True

当我已经导出一次数据时出现错误,并且有一个名为“CategoryBreakdown.xls”的打开的Excel电子表格。

使用On Error并显示一条消息告诉用户关闭电子表格/以不同的名称保存它是最佳做法吗?或者有没有办法在运行时检查是否有一个打开了该名称的文件,并在崩溃前提供不同的文件名?

由于

3 个答案:

答案 0 :(得分:0)

这对我有用:

While Len(Dir(FileName)) <> 0
Dim i As Integer
i = i + 1
FileName = "CategoryBreakdown" & i & ".xls"
Wend

影评?

答案 1 :(得分:0)

是的,最佳做法是在应用程序中添加错误处理程序以捕获意外错误并分享有关用户下一步应该执行的操作的充分信息。以下是您的案例的错误处理程序示例:

Sub ExportToExcel()
    On Error GoTo ErrHandler
    Dim FileName As String
    <...your other codes here...>

    FileName = "CategoryBreakdown.xls"
    DoCmd.OutputTo acOutputStoredProcedure, sqlSP, acFormatXLS, FileName, True

    Exit Sub
ErrHandler:
    If Err.Number = 2302 Then
        MsgBox "Cannot create " & FileName & " because it is currently open. Close the spreadsheet or save it under a different name.", vbExclamation, "Error"
    Else
        MsgBox "ExportToExcel encountered an unexpected error:" &  Err.Description, vbCritical, "Error"
    End If
End Sub

答案 2 :(得分:0)

据您了解,您希望保留以前导出的excel文件以及新导出文件。

所以你可以做的是在一个模块中创建一个公共函数,一个公共增量变量,然后在按钮点击事件上调用该函数错误2302以及......

  

公共职能

Option Compare Database
  Dim i As Integer
  Public Sub exportXLS()
    i = i + 1
    Dim FileName As String
    FileName = "CategoryBreakdown" & i & ".xls"
    DoCmd.OutputTo acOutputTable, "Table1", acFormatXLS, FileName, True
  End Sub
  

按钮单击功能

Private Sub cmdExportXLS_Click()
  On Error GoTo ErrHandler
  Call exportXLS
  Exit Sub
ErrHandler:
  If Err.Number = 2302 Then
    Call exportXLS
  Else
    MsgBox "error msg when other error occurs:" & Err.Description, vbCritical, "Error"
  End If
End Sub

这将在每次导出操作时增加文件名,或者当和导出操作弹出错误时。

我希望这会有所帮助