工程属性
With Application.VBE.ActiveVBProject
.Name
.Description
.Filename
.HelpFile
.Type
.Protection
.Mode
End With
设置工程属性
With Application.VBE.ActiveVBProject
.Name="***"
.Description="***"
.HelpFile=ThisWorkbook.Path & "\myHelp.txt"
End With
工程对象
Application.VBE.ActiveVBProject.VBComponents(1).Name
Application.VBE.ActiveVBProject.VBComponents(1).Type
返回值为:
1
2
3
100
重命名对象名称
Application.VBE.ActiveVBProject.VBComponents("旧名").Name="新名"
导出对象到文件夹
Application.VBE.ActiveVBProject.VBComponents("对象名称").Export "路径" & "名称"
导入对象到工程中
With Application.VBE.ActiveVBProject.VBComponents
.Import "路径" & "名称"
.Item(.Count).Name="新名"
End With
引用项目
ThisWorkbook.VBProject.References.AddFromFile "项目路径"
取消引用项目
ThisWorkbook.VBProject.References.Remove ThisWorkbook.VBProject.References("项目名")
显示当前所有引用
For Each rf In ThisWorkbook.VBProject.References
MsgBox rf.Name & vbCrLf & rf.FullPath
Next
需要引用工程
Microsoft Visual Basic for Application Extensibility 5.3
插入窗体
With ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
.Properties("Name")="我的窗体"
.Properties("Caption")="***"
.Properties("Height")=n
.Properties("Width")=n
End With
删除窗体
ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents("窗体名")
插入模块
ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule).Name="我的模块"
删除模块
ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents("模块名")
插入类模块
ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_ClassModule).Name="我的类模块"
删除类模块
ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents("类名")
写入代码
With ThisWorkbook.VBProject.VBComponents("我的模块").CodeModule
.DeleteLines 1, .CountOfLines
.InsertLines 1, "Public Sub hhh()"
.InsertLines 2, Space(4) & "a=100:b=200"
.InsertLines 3, Space(4) & "c=a+b"
.InsertLines 4, Space(4) & "msgbox ""c="" & c"
.InsertLines 5, "End Sub"
End With
Call run_hhh
删除某过程所有代码
With ThisWorkbook.VBProject.VBComponents("模块名").CodeModule
.DeleteLines .ProcStartLine("过程名", 0), .ProcCountLines("过程名", 0)
End With
删除某模块某些代码
ThisWorkbook.VBProject.VBComponents("模块名").CodeModule.DeleteLines x, y
删除某模块所有代码
With ThisWorkbook.VBProject.VBComponents("模块名").CodeModule
.DeleteLines 1, .CountOfLines
End With
修改某模块某行代码
ThisWorkbook.VBProject.VBComponents("模块名").CodeModule.ReplaceLine x, "代码"
模块中某过程代码行数
ThisWorkbook.VBProject.VBComponents("模块名").CodeModule.ProcCountLines("过程名", vbext_pk_Proc)
模块中所有程序代码行数
ThisWorkbook.VBProject.VBComponents("模块名").CodeModule.CountOfLines
提取模块中程序代码
ThisWorkbook.VBProject.VBComponents("模块名").CodeModule.Lines(x, y)