【问题标题】:Transfering Access Data into an Excel template sheet behind a form event将 Access 数据传输到表单事件后面的 Excel 模板表中
【发布时间】:2014-08-01 11:05:54
【问题描述】:

我正在开发一个新的数据库,以自动进行大量手动输入 Excel。现在我已经到了 Excel 可以比 Access 数据更容易绘制和分发的地步。

我想在表单上放置一个按钮,当按下该按钮时,它将从 Access 获取数据并填写现有的“模板”Excell 工作表,其中包含从一组单元格中提取的所有公式和图形。 Access 中的数据(可以在 VBA 中制作为 sql 查询/记录集)只是一些总计、平均值和 YTD 计算,需要放入现有 Excel 工作表中的一组特定单元格中并另存为一个(为了不覆盖模板)。它只有 13 x 5 个单元格的新数据。

这可能吗?

【问题讨论】:

    标签: excel ms-access vba


    【解决方案1】:

    是的,可以做到。不过,导出需要非常细致,因为您已经在 Excel 中使用了预定义的单元格范围。

    第一步是将数据转换为您需要的格式 - 您的 SQL 语句。 确保此格式适用于您的模板并返回正确的数据。

    完成后,您可以写入 Excel 文件。这是格式。

    expression.OutputTo(ObjectType, ObjectName, OutputFormat, OutputFile, AutoStart, TemplateFile, Encoding)
    

    这是一个例子:

    Dim outputFileName As String
            outputFileName = "C:\WhereYouWantYourFileToGo "
            DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "YourQueryName", outputFileName, True
    
            MsgBox "Data exported to  WhereverYouExportedItTo.xlsx"
    

    注意:当使用DoCmd.TransferSpreadsheet时,acSpreadsheetTypeExcel12用于Excel 2010,版本列表为here

    我假设其余的将由 Excel 处理。

    【讨论】:

    • 我在执行时收到“创建文件失败”错误 (3436)。我正在网络驱动器上尝试它。我希望有更好的方式来回复答案。谢谢
    • 确保您的outputFileName 正确无误。首先尝试导出到您的桌面,作为一个简单的测试。
    • 是的,就是这样。出现一个新错误:此表包含超出所提供范围的单元格。我还对此发表了评论,并得到了一个错误,即 excel 无法打开“test.xlsx”,因为文件扩展名无效。谢谢
    • 您使用的是 Excel 2010 吗?查看查询结果时,如果复制相同的数据(# 行、# 列)并将其粘贴到模板中,是否适合?
    • 好吧,后来我在另一台电脑上,但这是我发现的。我在 Excel 2010 中并使用了正确的电子表格类型。我找到了a reference to this on MSDN,它说将范围留空以进行导出,否则它将失败。我将其删除,现在将它们放入 xlsx 文档的第二张纸中。我可以设置单元格来查找这些值吗?有没有办法防止我的模板被覆盖?再次感谢,抱歉耽搁了。
    猜你喜欢
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多