如何自动刷新Excel文件并通过电子邮件发送?

时间:2013-04-03 19:36:00

标签: excel

我有一些Excel文件(数据透视表和图表)与Access数据库有数据连接。我希望他们能够自动刷新并在每个月的第一天通过电子邮件发送。

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

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

简而言之,我需要:

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

1 个答案:

答案 0 :(得分: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数据库(导致Make Table查询运行然后自行关闭),然后为每个Excel文件执行一项任务,我需要更新并发送电子邮件。所以现在我有Access更新源数据表,然后Excel打开每个文件,刷新数据,并通过电子邮件发送自己的PDF。任务完成!