从Acces to Excel提取的数据会自动转移到定义的工作表之外的额外工作表中



我正在尝试从MS Access to Excel工作表中提取一些数据,这是一种已经定义的模板。例如,我使用一个excel文件,比如一张名为Result的表(带有一些预定义的数据)作为源文件,然后将其复制到输出文件。然后,使用DoCmd.TransferSpreadsheet在输出文件中提取来自MS Access的一些OutputTable,并在结果表中明确提及提取。数据很好,但没有使用工作表Result,尽管使用与Ms Access的OutputTable相同的数据创建了一个名为Result1的额外工作表。

我使用的代码如下所述:

    SourceFile = CurrentProject.Path & "Template" & "Input_Template.xlsx"
    DestinFile = CurrentProject.Path & "Output" & "Output_" & sDateTimeStamp & ".xlsx"
    FileCopy SourceFile, DestinFile
    DoCmd.TransferSpreadsheet acExport, , "OutputTable", DestinFile, False, "Result"

我在我的系统上创建了这些文件夹Template(具有Input_Template.xlsx文件)和Output文件夹,它们位于放置数据库的同一路径下。

有人能告诉我是不是做错了,或者需要什么配置,或者我可能遗漏了什么吗。如有任何帮助,我们将不胜感激。

谢谢!!!蜂蜜

TransferSpreadsheet不适合导出到预先格式化的模板。请改用Excel库中的CopyFromRecordset方法。下面的示例将OutputTable的内容转储到目标模板文件的"结果"电子表格中,以"B2"单元格开头。

Dim xlApp As Object
Dim xlWork As Object
Dim xlSheet As Object
Dim rsExportResults As Recordset
Set rsExportResults = CurrentDb.OpenRecordset("OutputTable")
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlWork = xlApp.Workbooks.Open(DestinFile)
Set xlSheet = xlWork.Sheets("Result")
xlSheet.Range("B2").CopyFromRecordset rsExportResults

最新更新