你的需求比较偏门,网上资料很少,花了两个小时终于做出来了
因为需要获取VBA工程中的数据,必须在excel选项-信任中心-信任中心设置中勾选“信任对VBA工程对象模型的访问”
代码如下
Sub 依次运行工作表中的宏()
Dim subline As Integer
Dim strline As String
Dim subname As String
For i = 1 To Sheets.Count
subline = ThisWorkbook.VBProject.VBComponents(Sheets(i).Name).CodeModule.countoflines '获取工作表模块代码行数
If subline > 0 Then '行数大于0时
For L = 1 To subline '遍历代码行
strline = ThisWorkbook.VBProject.VBComponents(Sheets(i).Name).CodeModule.Lines(L, 1) '获取每行代码
With CreateObject("VBScript.RegExp") '使用正则表达式判断代码是否为*Sub *()形式,如果是则调用
.Global = True
.Pattern = ".*Sub\s(.*)\(\)"
If .test(strline) Then
subname = Sheets(i).Name & "." & .Replace(strline, "$1")
Application.Run subname
End If
End With
Next
End If
Next i
End Sub
真为自己不值
追问再请教你一个问题,我现在用VBA调用outlook自动发邮件后关闭outlook,采用的是扫描电脑进程,发现outlook就关闭它,但这样杀毒软件会误认为我这个excel是病毒,你有没有更好的办法关闭outlook?
追答不采纳我的答案就算了,问完一个又问另一个,还是不相关的问题,你在挤牙膏呢?
换个人问吧,我没有义务一直回答你的问题
追问大哥,我采纳了呀,我已经解决了,只是出于和你探讨而已,既然你要认为我是想挤你牙膏,拿就算了吧!
追答