我已经设置了一个基本的宏,我将表的内容导出为excel。宏工作得很好,但现在我想创建一个检查,看看我保存的文件名是否已经存在,如果是,删除该文件,以便我没有用户处理提示框询问他们是否会喜欢覆盖文件。
我将宏转换为VBA,以便我可以添加所需的dir(filename)和kill(filename)代码。完成后,我能够在VBA编辑器中成功运行代码,但是,当我尝试运行基于我访问过的表单的“on close”事件的代码时,它只会运行访问中查看的代码宏结构,好像我从未在VBA编辑器中添加任何额外的代码行。在完成编辑后,我是否应该做一些事情从VBA转换回Access?
请参阅下面我要执行的代码:
Function ExportLot()
On Error GoTo ExportLot_Err
Dim filename As String
filename = "\\server1\Trial
Database for QS Reports\Lot Log Report.xlsx"
DeleteFile (filename)
DoCmd.OutputTo acOutputQuery, "LLUnion", "ExcelWorkbook(*.xlsx)", filename, False, "", , acExportQualityPrint
ExportLot_Exit:
Exit Function
ExportLot_Err:
MsgBox Error$
Resume ExportLot_Exit
End Function
Function FileExists(ByVal FileToTest As String) As Boolean
FileExists = (Dir(FileToTest) <> "")
End Function
Sub DeleteFile(ByVal FileToDelete As String)
If FileExists(FileToDelete) Then 'See above
' First remove readonly attribute, if set
SetAttr FileToDelete, vbNormal
' Then delete the file
Kill FileToDelete
End If
End Sub
原始转换代码(当我从表单调用ExportLot时当前运行的代码):
Function ExportLot()
On Error GoTo ExportLot_Err
Dim filename As String
DoCmd.OutputTo acOutputQuery, "LLUnion", "ExcelWorkbook(*.xlsx)","\\server1\Trial Database for QS Reports\Lot Log Report.xlsx", False,"", , acExportQualityPrint
ExportLot_Exit:
Exit Function
ExportLot_Err:
MsgBox Error$
Resume ExportLot_Exit
End Function
答案 0 :(得分:0)
我设法弄清楚这个问题的解决方案或解决方法。我创建了一个新的宏(ExecuteCloseCode),并使用RunCode事件来调用问题中定义的函数(ExportLot())。
然后我使用on close事件来调用“ExecuteCloseCode”。
我不确定为什么这种方法有效,而我之前提出的努力没有......