我使用Docmd.Output将一些数据导出到excel。
FileName = "CategoryBreakdown.xls"
DoCmd.OutputTo acOutputStoredProcedure, sqlSP, acFormatXLS, FileName, True
当我已经导出一次数据时出现错误,并且有一个名为“CategoryBreakdown.xls”的打开的Excel电子表格。
使用On Error并显示一条消息告诉用户关闭电子表格/以不同的名称保存它是最佳做法吗?或者有没有办法在运行时检查是否有一个打开了该名称的文件,并在崩溃前提供不同的文件名?
由于
答案 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
这将在每次导出操作时增加文件名,或者当和导出操作弹出错误时。
我希望这会有所帮助