访问VBA:On Error始终转到用于发生错误的行

时间:2016-05-26 15:13:15

标签: vba ms-access

尝试导出查询时出现Permission denied错误。原因是有时用户将文件保持打开状态。所以我决定尝试一些错误处理并使其成为如果发生Permission Denied错误,那么它应该显示MsgBox来解释该怎么做。如果没有权限被拒绝错误,那么它应该继续并且不显示MsgBox。但是,它始终显示MsgBox

VBA:

Private Sub Command360_Click()

    Dim myQueryName As String
    Dim myExportFileName As String


        myQueryName = "qry_A" 
        myExportFileName = "J:\blah\Spreadsheet_" & Me![Combo353].Value & ".xlsx" 
        If Len(myExportFileName) > 0 Then
            On Error GoTo Err_Msg
            Kill myExportFileName
        End If
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, myQueryName, myExportFileName
        Application.FollowHyperlink myExportFileName


Err_Msg: MsgBox "You must close the spreadsheet in order to export.", vbOKOnly

End Sub

1 个答案:

答案 0 :(得分:1)

我明白了,但我愿意听取任何批评,以便改进这个解决方案。

Err_Msg: If (Err.Number = 70) Then MsgBox "Error: (" & Err.Number & ")" & Err.Description & ". You must close the spreadsheet in order to export.", vbOKOnly Else Resume Next

我需要做的就是在If行添加Err_Msg语句,其中条件基于我想要处理的确切错误。