将查询从 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.OutputTo
的 TemplateFile
参数仅用于 html(和类似)导出。
使用DoCmd.OutputTo
或DoCmd.TransferSpreadsheet
后有两种可能。这一切都可以通过 VBA 完成:
这取决于你的模板的复杂程度,哪个更好。
【讨论】:
模板非常基础。第一行有我需要的所有标题。没有其他的。将要使用它的最终用户对 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 模板的主要内容,如果未能解决你的问题,请参考以下文章