我有一些 Excel 文件(数据透视表和图表),它们与 Access 数据库有数据连接。我希望做的是让它们自动刷新并在每个月的 1 号收到电子邮件。
我在 Access 中做了类似的事情,其中我有一个数据库,其中包含一个可以运行并通过电子邮件发送的查询。我通过在数据库中创建一个表单,在打开数据库时自动打开该表单,然后在表单中使用 VBA 来运行查询 (DoCmd.OpenQuery),然后通过电子邮件发送 (DoCmd.SendObject) 来完成此操作
我可以对 Excel 文件执行类似的操作吗?我想我可以将“数据”选项卡下的“连接属性”设置为“打开文件时刷新数据”,但这假设用户具有活动的网络连接,因为数据库位于服务器上。此外,如果用户保存文件并在将来再次打开它,它将具有当前数据而不是原始数据。
所以简而言之,我需要:
- 打开 Excel 文件
- 刷新数据
- 电子邮件文件
这就是我最终所做的:
在 Access 中,我有一些创建表格查询,用于创建将由 Excel 文件使用的表格(废话)。我创建了一个表单,让它在数据库打开时自动打开,并在Form_Load()
事件我输入以下内容:
With DoCmd
.SetWarnings False
.OpenQuery "My Query 1"
.OpenQuery "My Query 2"
.SetWarnings True
End With
Application.Quit
在每个 Excel 文件中,我在网上找到了一些 VBA 代码来创建 PDF,然后通过电子邮件发送。在里面Workbook_Open()
事件,我有以下内容:
ActiveSheet.Unprotect
ActiveWorkbook.Connections("MyConnection").Refresh
ActiveSheet.Protect
Call FunctionThatCreatesPDFAndEmails
ActiveWorkbook.Close False
然后,我将一些任务放入 Windows 任务计划程序中。其中一项任务用于打开 Access 数据库(这会导致运行“生成表”查询,然后自行关闭),然后针对我需要更新和通过电子邮件发送的每个 Excel 文件添加一项任务。现在,我使用 Access 更新源数据表,然后使用 Excel 打开每个文件,刷新数据,并通过电子邮件发送 PDF 文件。任务完成!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)