安德鲁的工作簿中包含大量宏。他想生成一个包含所有宏的列表,因此他想知道是否有一种方法可以完成任务。

Excel中没有内部方法来创建宏列表。但是,您可以创建一个宏,该宏将列出您的宏。 (听起来有点多余,不是吗?)

例如,请考虑以下宏,该宏将逐步遍历工作簿中的所有项目以获取所有宏名称并将其放置在工作表中:

Sub ListMacros()

Dim VBComp As VBComponent     Dim wsTarget As Worksheet     Dim StartLine As Long     Dim iRow As Integer

Application.ScreenUpdating = False

Set wsTarget = Worksheets.Add     wsTarget.Range("A1") = "Macro"

wsTarget.Range("A1").Font.Bold = True     With wsTarget.Range("A1").Borders(xlEdgeBottom)

.LineStyle = xlContinuous         .ColorIndex = 0         .TintAndShade = 0         .Weight = xlThin     End With

iRow = 2

For Each VBComp In ThisWorkbook.VBProject.VBComponents         With VBComp.CodeModule             StartLine = .CountOfDeclarationLines + 1             Do Until StartLine >= .CountOfLines                 wsTarget.Cells(iRow, 1) = _                   .ProcOfLine(StartLine, vbext_pk_Proc)

iRow = iRow + 1                 StartLine = StartLine + _                   .ProcCountLines(.ProcOfLine(StartLine, _                   vbext_pk_Proc), vbext_pk_Proc)

Loop         End With     Next VBComp

wsTarget.Range("A1").EntireColumn.AutoFit     Application.ScreenUpdating = True End Sub

为了使用此宏,必须确保已设置Microsoft VBA可扩展性参考。为此,请按照下列步骤操作:

。在VBA编辑器中,从“工具”菜单中选择“引用”。显示“引用”对话框。

。滚动浏览“可用引用”列表,并确保已选中“ Microsoft Visual Basic应用程序可扩展性”复选框。 (参考文献的末尾可能有版本号,但应以注明的单词开头。)(请参见图1。)

。关闭对话框。

您还需要快速更改“信任中心”设置。

请按照下列步骤操作:

。在“代码”组中,单击“宏安全性”工具。 Excel将显示“信任中心”对话框,并在左侧选择“宏设置”选项。 (请参见图2。)

。确保选中“信任对VBA项目对象模型的访问”选项。

。单击确定。

当您运行宏时,它将一个新的工作表添加到您的工作簿,然后列出该工作簿中所有模块中所有宏的名称。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(5225)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: