ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何用正则方式遍历VBA代码中的Sub和Function?

如何用正则方式遍历VBA代码中的Sub和Function?

作者:绿色风 分类: 时间:2022-08-17 浏览:87
楼主
kevinchengcw
Q: 如何用正则方式遍历VBA代码中的Sub和Function?
A: 代码使用前先设置"信任对VB模块的访问",执行完成后在立即窗口可以看到结果
代码如下:
  1. Sub test()
  2. Dim Part, Str$, Match
  3. With CreateObject("vbscript.regexp")  '创建正则项目
  4.     .Global = True  '全局有效
  5.     .MultiLine = True  '多行有效
  6.     .ignorecase = True  '忽略大小写
  7.     .Pattern = "^((private|public) )?(sub|function) (\S+)(?=\()"  '设定匹配规则
  8.     For Each Part In ThisWorkbook.VBProject.VBComponents  '循环所有VBA工程区域
  9.         Str = ""  '初始化区域数据为空
  10.         With Part.codemodule  '如果该区域有代码存在则提取代码内容
  11.             If .CountOfLines > 0 Then Str = .Lines(1, .CountOfLines)
  12.         End With
  13.         If Str <> "" Then  '如果代码有效且正则匹配成功,则循环显示区域位置及匹配到的类型和名称
  14.             If .test(Str) Then
  15.                 For Each Match In .Execute(Str)
  16.                     Debug.Print Part.Name & " --> " & Match.submatches(2) & " --> " & Match.submatches(3)
  17.                 Next
  18.             End If
  19.         End If
  20.     Next
  21. End With
  22. End Sub
详见附件及素材源帖



test.rar
2楼
亡者天下
跟着K哥学习VBA
3楼
水星钓鱼
感谢分享
4楼
老糊涂
学习正则

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap