MS Access:尝试删除电子表格时DB崩溃

时间:2017-04-14 14:20:37

标签: vba ms-access access-vba ms-access-2013 ms-access-2016

我有一个导出文件的按钮,但首先会检查该文件是否存在。如果是,则删除文件并在其位置写入新文件。问题是单击此按钮会立即崩溃数据库。有什么想法吗?这个问题最近才出现 - 它在Acess 2013和Access 2016之前都运行良好。环境是一种商业环境(公司笔记本电脑,而不是个人电脑),我们所做的大部分工作都是由I.T.管理的。管理员。

代码:

Private Sub Command370_Click()

    Dim myQueryName As String
    Dim myExportFileName As String

    myQueryName = "qry_SAP_FGCheck"
    myExportFileName = "J:\2017\SAP\SAPExports\DailyFGCheck_Export.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: If (Err.Number = 70) Then MsgBox "Error: (" & Err.Number & ")" & Err.description & ". You must close the spreadsheet in order to export.", vbOKOnly Else Resume Next


End Sub

1 个答案:

答案 0 :(得分:2)

可能在按钮点击事件中调用的机器上没有这样的目录。您使用驱动器号resourceResponse.isCommitted()建议用户定义的网络目录映射驱动器路径。用户可能已映射到不同的驱动器号。尝试在cmd行J:\找到完整的UNC:

net use

实际上,现在文件总是被删除,因为您正在检查VBA字符串的长度(总是非零),就像之前分配它而不是实际的文件系统对象一样。

如果在删除或导出之前存在这样的目录文件路径,请考虑进行调整:

myExportFileName = "\\SomeNetwork\Path\2017\SAP\SAPExports\DailyFGCheck_Export.xlsx"

甚至考虑保存到数据库的当前路径,因此用户可以使用哪些目录无关紧要,甚至可以避免覆盖其他用户的导出。

If Len(Dir(myExportFileName, vbDirectory)) > 0 Then
    On Error GoTo Err_Msg
    Kill myExportFileName

    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _
                              myQueryName, myExportFileName
    Application.FollowHyperlink myExportFileName
End If

理想情况下,每个用户都在本地CPU上使用他/她自己的前端(即myExportFileName = Application.CurrentProject.Path & "\DailyFGCheck_Export.xlsx" If Len(Dir(myExportFileName, vbDirectory)) > 0 Then On Error GoTo Err_Msg Kill myExportFileName DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _ myQueryName, myExportFileName Application.FollowHyperlink myExportFileName End If 驱动器)。