有没有一种方法可以在打开具有相似文件名的Excel文件时自动运行宏?

时间:2019-01-18 23:47:12

标签: excel vba events

我进行了大量研究,并于今天下午独自尝试了此尝试,但未成功。当用户下载并打开以“ Current Approved”开头的.XLS文件时,我希望宏在打开时自动从任何“ Current Approved * .XLS”文件上的“ PERSONAL.XLSB”文件运行(*为通配符) 。这样,我可以将代码一次放入任何给定用户的“ PERSONAL.XLSB”文件中,并且该宏将自动被触发,而用户无需记住要通过快捷键或按钮来触发该宏。

在我的研究here和其他地方,我只看到了以下方法:

  1. 打开包含宏的工作簿时运行宏。
  2. 打开任何工作簿时运行一个宏。

我尝试通过上面的链接修改#2,但是我还没有弄清楚如何以这种方式在名称相似的文件上自动运行宏。

'Declare the application event variable
Public WithEvents MonitorApp As Application

'Set the event variable be the Excel Application
Private Sub Workbook_Open()
    Set MonitorApp = Application
End Sub

'This Macro will run whenever an Excel Workbooks is opened
Private Sub MonitorApp_WorkbookOpen(ByVal Wb As Workbook)
    Dim Wb2 As Workbook

    For Each Wb2 In Workbooks
        If Wb2.Name Like "Current Approved*" Then
            Wb2.Activate
            MsgBox "Test"
        End If
    Next
End Sub

本质上,如果我从CRM中下载一个以“当前批准”开头的Excel文件并打开它,我希望看到一个“测试”消息框。

1 个答案:

答案 0 :(得分:1)

您的代码看起来与您描述的不一样。下面的代码在打开符合以“当前批准”开头的规则的工作簿时应显示“测试” MsgBox

'This Macro will run whenever an Excel Workbooks is opened
Private Sub MonitorApp_WorkbookOpen(ByVal Wb As Workbook)
    Dim cText As String
    cText = "Current Approved"

    If UCase(Left(Wb.Name, Len(cText))) = UCase(cText) Then
           ' Wb2.Activate
            MsgBox "Test"
    End If

End Sub