【发布时间】:2011-07-19 04:17:16
【问题描述】:
我正在 Autocad 中开发一些 VBA 宏。内置编辑器已过时,但我找不到更好的方法来编辑 .dvb 文件。
.dvb 文件确实包含许多其他打包的源文件,到目前为止,我认为 Autocad 是唯一可以解压缩它们的软件...
似乎能够做到这一点的唯一方法是手动从.dvb 导出每个文件;但由于我在那里有大约 30 个文件,这似乎不是一个好方法。
关于如何更好地做到这一点的任何想法?
【问题讨论】:
我正在 Autocad 中开发一些 VBA 宏。内置编辑器已过时,但我找不到更好的方法来编辑 .dvb 文件。
.dvb 文件确实包含许多其他打包的源文件,到目前为止,我认为 Autocad 是唯一可以解压缩它们的软件...
似乎能够做到这一点的唯一方法是手动从.dvb 导出每个文件;但由于我在那里有大约 30 个文件,这似乎不是一个好方法。
关于如何更好地做到这一点的任何想法?
【问题讨论】:
您可以使用此代码导出所有文件:
Public Sub Export()
Dim vbe As vbe
Set vbe = ThisDrawing.Application.vbe
Dim comp As VBComponent
Dim outDir As String
outDir = "C:\\Temp\\VbaOutput"
If Dir(outDir, vbDirectory) = "" Then
MkDir outDir
End If
For Each comp In vbe.ActiveVBProject.VBComponents
Select Case comp.Type
Case vbext_ct_StdModule
comp.Export outDir & "\" & comp.Name & ".bas"
Case vbext_ct_Document, vbext_ct_ClassModule
comp.Export outDir & "\" & comp.Name & ".cls"
Case vbext_ct_MSForm
comp.Export outDir & "\" & comp.Name & ".frm"
Case Else
comp.Export outDir & "\" & comp.Name
End Select
Next comp
MsgBox "VBA files were exported to : " & outDir
End Sub
【讨论】:
如果您不想使用上面的 Export() 子例程修改您的代码,您可以使用 Leslie Lowe 编写的 VBA2VB Form Converter 宏或编写的 modified version 从 .dvb 文件导出您的 VBA 代码作者:Autodesk 开发人员网络的 Augusto Gonçalves。这个宏的额外好处是能够将简单的 VBA 表单转换为 VB6 表单。如果您希望将来能够将项目移植到 .NET,则需要执行此操作,因为 AutoCAD 正在放弃 VBA 支持。宏的修改版本特别好,因为它将创建您需要执行迁移的.vbproj ASCII 文件,否则您需要一个旧的 Visual Basic 6 IDE 的副本来制作。
FWIW,如果您想查看其中的内容,可以使用 7-Zip 之类的存档实用程序打开一个 .dvb 文件 - 但它似乎是经过编译的,如果您想要人类可读,它没有帮助或可导出的代码。
【讨论】: