访问宏转换为 VBA,然后仅编辑 执行访问定义的代码



我已经设置了一个基本的宏,我可以在其中导出表格的内容以Excel。宏效果很好,但现在我想创建一个检查以查看我保存到的文件名是否已经存在,如果是,则删除该文件,这样我就不会让用户处理提示框询问他们是否要覆盖该文件。

我将宏转换为VBA,以便我可以添加所需的dir(文件名(和kill(文件名(代码。完成后,我能够在 VBA 编辑器中成功运行代码,但是,当我尝试根据我访问中的表单的"关闭"事件运行代码时,它只会运行在访问宏结构中查看的代码,就好像我从未在 VBA 编辑器中添加任何其他代码行一样。完成编辑后,我应该做些什么来从 VBA 转换回 Access?

请参阅下面我想执行的代码:

Function ExportLot()
On Error GoTo ExportLot_Err
Dim filename As String
filename = "\server1Trial 
Database for QS ReportsLot 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)","\server1Trial Database for QS ReportsLot Log Report.xlsx", False,"", , acExportQualityPrint
ExportLot_Exit:
Exit Function
ExportLot_Err:
MsgBox Error$
Resume ExportLot_Exit
End Function

我设法找出了这个问题的解决方案或解决方法。我创建了一个新的宏(ExecuteCloseCode(,并使用RunCode事件调用了问题中定义的函数(ExportLot(((。

然后我使用 on close 事件来调用 "ExecuteCloseCode"。

我不确定为什么这种方法有效,我之前提出的努力也没有......

最新更新