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

时间:2017-07-28 17:11:11

标签: ms-access access-vba

我已经设置了一个基本的宏,我将表的内容导出为ex​​cel。宏工作得很好,但现在我想创建一个检查,看看我保存的文件名是否已经存在,如果是,删除该文件,以便我没有用户处理提示框询问他们是否会喜欢覆盖文件。

我将宏转换为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

1 个答案:

答案 0 :(得分:0)

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

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

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