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

时间:2014-04-07 11:45:05

标签: excel vba excel-vba

我有很多我多年来编写的excel宏,我想将它们编译成一个文档或模块,其中包含我最常使用的函数(编写非常模块化并可由其他人重用)。

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

2 个答案:

答案 0 :(得分:2)

这里的主题很清楚:

Pearson's Programming The VBA Editor

答案 1 :(得分:0)

此代码

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

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