为任何活动或打开的工作簿运行宏?

时间:2012-03-23 17:35:56

标签: vba excel-vba excel

所以我创建了一个简单的宏:

  • 取消隐藏工作表。
  • 查找并替换文字。
  • 重新隐藏工作表。

我有这个宏工作,但只有在我将宏代码嵌入工作表时才能使它工作。

这是代码;

Sub UpdateChartParams()

Dim Chart_Parameters As Worksheet

Sheets("Chart_Parameters").Visible = True

Sheets("Chart_Parameters").Select
Cells.Replace What:="testtext", Replacement:="newtext", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False

Sheets("Chart_Parameters").Visible = False

End Sub

我需要做的是尽可能针对任何打开的工作簿运行此文件。

2 个答案:

答案 0 :(得分:2)

这将使用匹配的工作表更新任何打开的工作簿。 无需取消隐藏以进行替换。

Sub UpdateChartParams()

    Dim Chart_Parameters As Worksheet
    Dim wb As Excel.Workbook

    For Each wb In Application.Workbooks
    If wb.Name <> ThisWorkbook.Name Then

        Set Chart_Parameters = Nothing
        On Error Resume Next 'ignore error if no such sheet...
        Set Chart_Parameters = wb.Worksheets("Chart_Parameters")
        On Error GoTo 0

        If Not Chart_Parameters Is Nothing Then

            Chart_Parameters.Cells.Replace What:="testtext", _
                   Replacement:="newtext", LookAt:=xlPart, _
                    SearchOrder:=xlByRows, MatchCase:=False

        End If

    End If
    Next wb

End Sub

答案 1 :(得分:0)

德里克,

执行此操作的一种方法是将宏添加到文件PERSONAL.XLSB中。每次启动Excel时,此文件都将在后台加载。最初PERSONAL.XLSB文件不存在。

要自动创建此文件,只需开始录制“虚拟”宏(使用电子表格左下方的录制按钮)并选择“个人宏工作簿”将其存储。录制宏后,您可以使用[Alt] + [F11]打开VBA编辑器,您将看到带有“虚拟”宏的PERSONAL.XLSB文件。

我使用此文件存储一直可用的常规宏的负载。我已将这些宏添加到我自己的菜单功能区中。

这个常见宏文件的一个缺点是,如果启动多个Excel实例,您将收到一条错误消息,表明PERSONAL.XLSB文件已被Excel实例Nr使用。 1.只要你现在不添加新的宏,这就不成问题了。