我有一个导出文件的按钮,但首先会检查该文件是否存在。如果是,则删除文件并在其位置写入新文件。问题是单击此按钮会立即崩溃数据库。有什么想法吗?这个问题最近才出现 - 它在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
答案 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
驱动器)。