以编程方式从excel文件中提取excel vba宏

以编程方式从excel文件中提取excel vba宏,vba,excel,Vba,Excel,我多年来编写了许多excel宏,我希望将它们编译成一个文档或模块,其中包含我最常用的函数(编写的非常模块化,可供其他人重用) 有人知道如何使用vba或其他自动化程序以编程方式访问excel vba模块吗?此处详细介绍了该主题: 此代码 打开由StrDir指定的目录中的所有xlsm文件(本例中为C:\temp) 如果模块中至少有一行代码,则将每个代码组件导出到由StrDir2(C:\mycode)指定的第二个目录 代码 +1.如果OP费心花5分钟在谷歌上,他就会发现这一点此解决方案有效,只需稍

我多年来编写了许多excel宏,我希望将它们编译成一个文档或模块,其中包含我最常用的函数(编写的非常模块化,可供其他人重用)


有人知道如何使用vba或其他自动化程序以编程方式访问excel vba模块吗?

此处详细介绍了该主题:

此代码

  • 打开由
    StrDir
    指定的目录中的所有
    xlsm
    文件(本例中为C:\temp)
  • 如果模块中至少有一行代码,则将每个代码组件导出到由StrDir2(C:\mycode)指定的第二个目录
代码


+1.如果OP费心花5分钟在谷歌上,他就会发现这一点此解决方案有效,只需稍作修改,也可适用于PPT和Word。尽管代码需要一些MOD来提取所有组件,并进行更新以处理多个工作簿。是的。将搜索更改为查找.xls文件以满足这些类型的需要。导出模块时,它会显示以下文本“Attribute VB_Name=“Module1“。是否有方法从每个模块获取文本并将其存储在变量中?”?。也就是说,我不想编写一个程序来整理我已写入TXT文件的所有excel宏,然后再编写另一个程序来解析文本文件中的数据?您可以将此作为一个单独的问题来提问,因为到目前为止,您似乎还没有编写任何东西来解决您的问题…很难证明这样做是正确的,当你问问题的频率受到限制时。也就是说,在电脑前的一小段时间内,你不能问所有的问题,因为你被限制在20分钟之内。
Sub GetCode()
Dim WB As Workbook
Dim VBProj
Dim VBComp
Dim StrDir As String
Dim StrDir2 As String
Dim StrFile As String

StrDir = "c:\temp\"
StrDir2 = "c:\mycode\"

If Len(Dir(StrDir2, vbDirectory)) = 0 Then MkDir StrDir2
StrFile = Dir(StrDir & "*.xlsm")

With Application
.ScreenUpdating = False
.EnableEvents = False
End With

Do While Len(StrFile) > 0
    Set WB = Workbooks.Open(StrDir & StrFile, False)
    Set VBProj = WB.VBProject
        For Each VBComp In VBProj.vbcomponents
            If VBComp.codemodule.countoflines > 0 Then VBComp.Export StrDir2 & StrFile & "_" & VBComp.Name & ".txt"
        Next
    WB.Close False
StrFile = Dir
Loop

With Application
.ScreenUpdating = True
.EnableEvents = True
End With

End Sub