每当下载具有特定名称的文件时自动触发VBA宏

每当下载具有特定名称的文件时自动触发VBA宏,vba,excel,Vba,Excel,用户从仪表板下载定期报告。此报告作为.xls文件下载。用户要求我编写一个VBA程序,该程序将在每次下载此报告时完成多个操作 她不想在下载报告时记住启动这个宏,她希望在下载文件时它自己启动 报告始终具有相同的名称和格式 有没有办法让Excel检测到某个文件已以特定名称下载并启动宏?OP Here 谢谢大家的回复。我想公布我最后做了什么,以防其他人需要完成类似的任务 我创建了一个插件来实现这一点 它包括一个类模块,用于侦听WindowActivate事件何时发生,并检查工作簿名称是否与报表名称匹配。

用户从仪表板下载定期报告。此报告作为.xls文件下载。用户要求我编写一个VBA程序,该程序将在每次下载此报告时完成多个操作

她不想在下载报告时记住启动这个宏,她希望在下载文件时它自己启动

报告始终具有相同的名称和格式

有没有办法让Excel检测到某个文件已以特定名称下载并启动宏?

OP Here

谢谢大家的回复。我想公布我最后做了什么,以防其他人需要完成类似的任务

我创建了一个插件来实现这一点

它包括一个类模块,用于侦听WindowActivate事件何时发生,并检查工作簿名称是否与报表名称匹配。如果是,它将执行请求的转换

Public WithEvents appevent As Application

Private Sub appevent_WindowActivate(ByVal wb As Workbook, ByVal Wn As Window)
If ((wb.Name Like "WB NAME GIVEN BY USER*")
     DO REQUESTED TRANSFORMATIONS
ThisWorkbook对象调用类模块,如下所示:

'Make instance of Class1 with global scope'
  Dim myobject As New Class1


Private Sub Workbook_Open()
  Set myobject.appevent = Application
End Sub
显然,此解决方案取决于各种假设,对性能非常不利。但是,我之所以发布它,是因为它确实起到了作用,而且可能对其他人有用


英语不是我的第一语言,我为任何错误道歉

在Excel中,没有。您必须使用她正在使用的浏览器来打开Excel文档,然后在Excel的“打开”事件中,您可以触发它。为此(根据浏览器中的名称自动打开文档),您需要研究这是否可能(tbh,我不这么认为)。根据此电子表格的联机位置,如果您“反向”此过程,可能有一种使用VBA的方法。让她打开Excel,然后让Excel下载报告,运行宏。或者-如果您知道要使用的url,您可以使用Excel请求url,然后下载/操作文件。。。当然,这一切都要求员工记住使用Excel。如果用户愿意让Excel(或其他一些可以使用Excel对象模块的应用程序)一直在后台运行,则可以将其设置为不断监视硬盘上文件的创建/更新,然后打开工作簿并执行必要的操作。(但Batm…,我是说Bruce,如果有机会重新培训用户使用新方法,我会建议使用Excel进行下载。)您可以将VBA转换为VBScript,并在windows scheduler中定期运行。这里正在进行什么样的后台处理?如果在任何时候将这些数据上载到数据库,则应使用数据库工具来管理自动过程