使用vba访问查询到macros启用的Excel模板

我试图把需要参数的查询中的数据与马克斯在其中的Excel模板,但我不断收到错误。 我从表单获取参数。 inheritance人我的代码:

Private Sub exportButton_Click() Dim XL As Excel.Application Dim wbTarget As Workbook Dim qdfResults As QueryDef Dim rsResults As Recordset 'Set up refernce to the query to export Set qdfResults = CurrentDb.QueryDefs("MarksQuery") qdfResults.Parameters("Forms!comp!competition") = Forms!comp!competition 'Execute Query Set rsResults = qdfResults.OpenRecordset() 'reference excel Set XL = CreateObject("Excel.Application") 'refernce workbook Set wbTarget = XL.Workbooks.Open("C:\Users\user\Documen…\folder\resultTemplate.xltm") 'clear excel sheet wbTarget.Worksheets("marktable").Cells.ClearContents 'paste data from query to worksheet wbTarget.Worksheets("markTable").Cells(1, 1).CopyFromRecordSet rsResults 'save workbook ** 1) 'wbTarget.SaveAs ("C:\Users\user\Documents \folder\resultTemplate1.xlsm") ** 2) wbTarget.SaveAs FileName:="C:\Users\user\Documents\folder\resultTemplate1.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled 'clear variables Set wbTarget = Nothing Set XL = Nothing Set qdfResults = Nothing End Sub 

与1)我可以得到的数据到工作簿,但没有macros2)我可以获取数据和macros,但不会保存正确

有什么build议么?

编辑**通过不会正确保存我的意思是,它创造了一个temperory文件,我不能保存,现在它甚至不会创build,现在它创build一个文件与0字节,没有types

不能回答自己的问题,但直到我能inheritance我的工作代码:

唯一的问题,我可以看到是wbTarget.Close和XL.Quit werent使用,导致该模块仍然运行,因此文件没有完全保存,但暂时的。 感谢@汤普森

 Private Sub exportButton_Click() Dim XL As Excel.Application, wbTarget As Workbook Dim qdfResults As QueryDef Dim rsResults As Recordset Set XL = New Excel.Application Set wbTarget = XL.Workbooks.Open("C:\Users\user\Documents\folder\ResultsTemplate.xltm") Set qdfResults = CurrentDb.QueryDefs("MarksQuery") qdfResults.Parameters("Forms!comp!competition") = Forms!comp!competition Set rsResults = qdfResults.OpenRecordset() wbTarget.Worksheets("markTable").Cells(1, 1).CopyFromRecordSet rsResults wbTarget.SaveAs "C:\Users\user\Documents\folder\Results.xlsm", xlOpenXMLWorkbookMacroEnabled wbTarget.Close Set wbTarget = Nothing XL.Quit End Sub 

Office自动化项目中的奇怪行为通常可能是未能正确Close对象和Quit应用程序的结果。 在这种情况下添加

 wbTarget.Close 

 XL.Quit 

声明似乎已经解决了这个问题。

我能看到的唯一的问题是,使用了wbTarget.Close和XL.Quit werent,导致模块仍然运行,因此文件没有完全保存,而是暂时的。 感谢@汤普森

 Private Sub exportButton_Click() Dim XL As Excel.Application, wbTarget As Workbook Dim qdfResults As QueryDef Dim rsResults As Recordset Set XL = New Excel.Application Set wbTarget = XL.Workbooks.Open("C:\Users\user\Documents\folder\ResultsTemplate.xltm") Set qdfResults = CurrentDb.QueryDefs("MarksQuery") qdfResults.Parameters("Forms!comp!competition") = Forms!comp!competition Set rsResults = qdfResults.OpenRecordset() wbTarget.Worksheets("markTable").Cells(1, 1).CopyFromRecordSet rsResults wbTarget.SaveAs "C:\Users\user\Documents\folder\Results.xlsm", xlOpenXMLWorkbookMacroEnabled wbTarget.Close Set wbTarget = Nothing XL.Quit End Sub