excel VBA 怎样依次运行不同工作表中的宏

同一工作簿,不同工作表中分别有不同的宏(没有放在thisworkbook中),请问怎么让他们依次运行这些宏,要求必须上一个运行完了再运行下一个。

你的需求比较偏门,网上资料很少,花了两个小时终于做出来了

因为需要获取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?

追答

不采纳我的答案就算了,问完一个又问另一个,还是不相关的问题,你在挤牙膏呢?
换个人问吧,我没有义务一直回答你的问题

追问

大哥,我采纳了呀,我已经解决了,只是出于和你探讨而已,既然你要认为我是想挤你牙膏,拿就算了吧!

追答

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-06-08
这个可以写一个总的入口,然后依次调用就行本回答被提问者采纳
相似回答