2

我有一些 Excel 文件(数据透视表和图表)与 Access 数据库有数据连接。我希望做的是让它们自动刷新并在每个月的 1 日收到电子邮件。

我在 Access 中做了类似的事情,我有一个数据库,其中包含一个可以运行并通过电子邮件发送的查询。我通过在数据库中创建一个表单,在打开数据库时自动打开表单,然后在表单中使用 VBA 运行查询(DoCmd.OpenQuery),然后通过电子邮件发送它(DoCmd.SendObject)来实现这一点

我可以用 Excel 文件做类似的事情吗?我想我可以将“数据”选项卡下的“连接属性”设置为“打开文件时刷新数据”,但这假设用户具有活动的网络连接,因为数据库位于服务器上。此外,如果用户保存文件并在将来再次打开它,它将具有当前数据而不是原始数据。

所以简而言之,我需要:

  1. 打开 Excel 文件
  2. 刷新数据
  3. 电子邮件文件
4

1 回答 1

2

这就是我最终做的事情:

在 Access 中,我有一些 Make Table 查询可以制作 Excel 文件将使用的表格 (duh)。我创建了一个表单,在数据库打开时自动打开它,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。任务完成!

于 2013-04-11T12:15:38.380 回答