将查询从 Access 导出到 Excel 模板

Posted

技术标签:

【中文标题】将查询从 Access 导出到 Excel 模板【英文标题】:Export Query from Access to an Excel Template 【发布时间】:2015-11-05 13:06:52 【问题描述】:

我有一个在一周中的指定日期运行的查询。在那一天,如果任何记录被标记为“需要订购”,那么将打开一个带有命令按钮的订单窗口。命令按钮应该将查询数据导出到一个 excel 模板(已经格式化为它应该看起来的样子),然后附加到一个电子邮件模板以发送。我可以将查询附加到电子邮件中,但我似乎无法弄清楚如何让它使用 excel 模板,而不是每次都创建一个新的 excel 工作簿。有什么建议可以尝试吗?

Dim myolapp As Object 
Dim myitem As Object 

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "BoxOrder", "C:\Users\Database Design\Desktop\BoxOrder.xlsx", True 

Set myolapp = CreateObject("Outlook.Application") myolapp.Session.Logon 
Set myitem = myolapp.CreateItemFromTemplate("F:\BOX ORDER FOR PC CONNECTION.oft") 
Set myAttachments = myitem.attachments 

myAttachments.Add "C:\Users\Database Design\Desktop\BoxOrder.xlsx"
myitem.Display 'or send 
DoCmd.Close acForm, "OrderForm"

BoxOrder 查询:

SELECT '' AS [Quantity Needed], [BoxOrder].[Box Size], [BoxOrder].Comments, 
       [BoxOrder].[Certified/Stamped Boxes], [BoxOrder].[Box Type] 
FROM BoxOrder; 

【问题讨论】:

【参考方案1】:

你不能。 DoCmd.OutputToTemplateFile 参数仅用于 html(和类似)导出。

使用DoCmd.OutputToDoCmd.TransferSpreadsheet后有两种可能。这一切都可以通过 VBA 完成:

打开导出文件和模板文件,将导出的数据复制粘贴到模板中,另存为新文件。 打开导出的文件,使用 VBA 应用格式。 使用 Excel 宏记录器为您提供一个良好的开端。

这取决于你的模板的复杂程度,哪个更好。

【讨论】:

模板非常基础。第一行有我需要的所有标题。没有其他的。将要使用它的最终用户对 excel 不是很熟悉,所以我试图让他尽可能简单。 那么你应该使用DoCmd.TransferSpreadsheet acExport, ... , HasFieldNames := True。如有必要,编辑您的查询列以获得您想要的列名 (SELECT Fieldname AS [Column Header], ...)。那么您可能不需要任何进一步的格式化。 @鼠标 如果我需要添加一个我没有字段的列怎么办。我需要将所需数量添加到 excel 电子表格中,用户将手动输入数量。如果必须,我想我可以制作另一个窗口,打开询问数量。我只是想避免打开几个窗口来发送订单。 @Andre451 @Mouse:您可以简单地在查询中添加一个恒定的空列:SELECT ..., "" AS [Quantity Needed] FROM ...。这将在 Excel 中生成一个空列。或者如果创建导出的用户必须填写这个,有一个列[Quantity Needed],这将成为打开或导出查询时询问的参数。 @Mouse:呵呵。 :) 那么请accept 回答(我可能也赢得了赞成票......)

以上是关于将查询从 Access 导出到 Excel 模板的主要内容,如果未能解决你的问题,请参考以下文章

自动导出访问表数据以填充模板 Excel 工作表

MS Access导出联合查询到Excel,VBA问题

将 Access 查询导出到 Excel 会带来主键,而不是信息

将 MS Access 查询导出到 Excel

如何从访问将 2 个查询导出到 Excel 中的单个工作表

将 Access 2003 列表框行源(查询)导出到 Excel 2003 的最有效方法