用于导出宏的VBA宏
我想编写一个宏,用于导出VBA编辑器项目视图中存在的宏,因为无法导出多个文件 我之所以要这样做,是因为我需要用于导出宏的VBA宏,vba,excel,Vba,Excel,我想编写一个宏,用于导出VBA编辑器项目视图中存在的宏,因为无法导出多个文件 我之所以要这样做,是因为我需要.bas和.cls文件来创建一个doxygen文档 如果有人知道更简单的解决方案,请告诉我。否则:如何从项目一次导出所有VBA代码文件 致以最良好的问候和感谢 首先,不用说,任何“接触到您的代码”的代码都必须是可信的 是的,这是可能的,您可以使用VBProject和VBComponent来实现它。请看一看,然后。这些链接很好地解释了如何做你要求的事情 工作示例,导出.bas、.cls和.f
.bas
和.cls
文件来创建一个doxygen文档
如果有人知道更简单的解决方案,请告诉我。否则:如何从项目一次导出所有VBA代码文件
致以最良好的问候和感谢 首先,不用说,任何“接触到您的代码”的代码都必须是可信的
是的,这是可能的,您可以使用VBProject和VBComponent来实现它。请看一看,然后。这些链接很好地解释了如何做你要求的事情 工作示例,导出
.bas
、.cls和.frm
模块:
Option Explicit
Public Sub MakeDoxy()
Dim rootDir As String
Dim sourceDir As String
rootDir = GetFolder("C:\") & "\"
sourceDir = rootDir & "source\"
If Dir(rootDir, vbDirectory) = "" Then
MkDir rootDir
End If
If Dir(sourceDir, vbDirectory) = "" Then
MkDir sourceDir
End If
ExportVBAModules (sourceDir)
End Sub
Private Sub ExportVBAModules(ByVal sourceDir As String)
Dim objVBComp As VBComponent
Dim objVBProj As VBProject
Dim ext As String
Set objVBProj = ThisWorkbook.VBProject
For Each objVBComp In objVBProj.VBComponents
' We don't export THIS module
If objVBComp.Name = "MakeDoxygen" Then GoTo Skip
If Dir(sourceDir & objVBComp.Name, vbDirectory) = "" Then
MkDir sourceDir & objVBComp.Name
End If
Select Case objVBComp.Type
Case vbext_ct_ClassModule: ext = ".cls"
Case vbext_ct_Document: GoTo Skip
Case vbext_ct_StdModule: ext = ".bas"
Case vbext_ct_MSForm: ext = ".frm"
Case Else: GoTo Skip
End Select
objVBComp.Export sourceDir & objVBComp.Name & "\" & objVBComp.Name & ext
Skip:
Next
End Sub
Private Function GetFolder(strPath As String) As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Select ''VBADoxy'' Root Folder"
.AllowMultiSelect = False
.InitialFileName = strPath
If .Show <> -1 Then GoTo NextCode
sItem = .SelectedItems(1)
End With
NextCode:
GetFolder = sItem
Set fldr = Nothing
End Function
选项显式
公共子MakeDoxy()
Dim rootDir作为字符串
Dim sourceDir作为字符串
rootDir=GetFolder(“C:\”&“\”
sourceDir=rootDir&“source\”
如果Dir(rootDir,vbDirectory)=“”,则
MkDir rootDir
如果结束
如果Dir(sourceDir,vbDirectory)=“”,则
MkDir源目录
如果结束
ExportVBAModules(sourceDir)
端接头
专用子ExportVBAModules(ByVal sourceDir作为字符串)
作为VBComponent的Dim objVBComp
作为VBProject的Dim objVBProj
Dim ext作为字符串
设置objVBProj=thiswoolk.VBProject
对于objVBProj.VBComponents中的每个objVBComp
'我们不导出此模块
如果objVBComp.Name=“MakeDoxygen”,则转到跳过
如果Dir(sourceDir&objVBComp.Name,vbDirectory)=“”,则
MkDir sourceDir和objVBComp.Name
如果结束
选择案例objVBComp.Type
案例vbext\U ct\U类模块:ext=“.cls”
案例vbext\u ct\u文档:转到跳过
案例vbext\u ct\u std模块:ext=“.bas”
案例vbext\u ct\u MSForm:ext=“.frm”
其他情况:跳转
结束选择
objVBComp.Export sourceDir&objVBComp.Name&“\”&objVBComp.Name&ext
跳过:
下一个
端接头
私有函数GetFolder(strPath作为字符串)作为字符串
Dim fldr As FILE对话框
以字符串形式显示
设置fldr=Application.FileDialog(msoFileDialogFolderPicker)
与fldr
.Title=“选择“VBADoxy”根文件夹”
.AllowMultiSelect=False
.InitialFileName=strPath
如果.Show-1,则转到下一个代码
sItem=.SelectedItems(1)
以
下一个代码:
GetFolder=sItem
设置fldr=无
端函数
@StefanFalk如果你认为有好处,请添加你的答案(不要编辑我的)。我的编辑只是按照你的建议为我们之后的人编写的代码。如果你能在我的答案下面添加你的答案,你将对社区有好处:)如果(typeof(T)==typeof(UInt16))