hlh168 发表于 2008-7-5 00:15:00

如何将VBA代码转换为VB6代码

本帖最后由 作者 于 2008-7-5 0:27:49 编辑

如何将VBA代码转换为VB6代码?将用VBA编写的CAD线段测量代码转换为VB6代码,希望各位高手赐教,帮我看看如何更改,衷心谢谢!!

wylong 发表于 2008-7-5 15:52:00

<p>授人以鱼不如授人以渔</p><p>Autocad 二次开发中VB或VBA的应用问题</p><p>1、&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如何在 VB 中连接 AutoCAD。<br/>启动 VB ,引用 AutoCAD 类型库。操作步骤:从“工程”菜单中选择“引用”选项,启动“引用”对话框。在“引用”对话框中,选择 AutoCAD 类型库,然后单击“确定”。<br/><font style="FONT-SIZE: small; LINE-HEIGHT: 1.3em;">2、</font><wbr></wbr>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;定义模块级变量 AutoCAD 应用程序 (acadApp) 和当前的文档 (acadDoc)。<br/>如果 AutoCAD 正在运行,使用 GetObject 函数将检索 AutoCAD Application 对象。如果 AutoCAD 没有运行,使用 CreateObject 函数试图创建一个 AutoCAD Application 对象。如果创建成功,会启动 AutoCAD;如果失败,则会发生错误。 <br/>同时运行多个 AutoCAD 任务时,GetObject 函数会返回 Windows 运行对象表中的第一个 AutoCAD 实例。<br/>要显示 AutoCAD 图形窗口,需要将 AutoCAD 应用程序的 Visible 特性设置为 TRUE。 <br/>使用 acadDoc 变量引用当前的 AutoCAD 图形。 <br/>示例: <br/>Dim acadApp As AcadApplication<br/>Dim acadDoc as AcadDocument <br/>Sub ConnectToAcad()<br/>On Error Resume Next<br/>Set acadApp = GetObject(, "AutoCAD.Application")<br/>If Err Then<br/>Err.Clear<br/>Set acadApp = CreateObject("AutoCAD.Application")<br/>If Err Then End<br/>End If<br/>acadApp.Visible = True<br/>Set acadDoc = acadApp.ActiveDocument<br/>End Sub<br/>2、如何使 VB 开发的程序不依赖于 AutoCAD 的版本。<br/>启动 VB ,定义模块级变量 AutoCAD 应用程序 (acadApp) 和当前的文档 (acadDoc)。<br/>如果 AutoCAD 正在运行,使用 GetObject 函数将检索 AutoCAD Application 对象。如果 AutoCAD 没有运行,使用 CreateObject 函数试图创建一个 AutoCAD Application 对象。如果创建成功,会启动 AutoCAD;如果失败,则会发生错误。 <br/>同时运行多个 AutoCAD 任务时,GetObject 函数会返回 Windows 运行对象表中的第一个 AutoCAD 实例。<br/>要显示 AutoCAD 图形窗口,需要将 AutoCAD 应用程序的 Visible 特性设置为 TRUE。 <br/>使用 acadDoc 变量引用当前的 AutoCAD 图形。 <br/>示例: <br/>Dim acadApp As Object<br/>Dim acadDoc as Object <br/>Sub ConnectToAcad()<br/>On Error Resume Next<br/>Set acadApp = GetObject(, "AutoCAD.Application")<br/>If Err Then<br/>Err.Clear<br/>Set acadApp = CreateObject("AutoCAD.Application")<br/>If Err Then End<br/>End If<br/>acadApp.Visible = True<br/>Set acadDoc = acadApp.ActiveDocument<br/>End Sub<br/>与第一个问题相比较,可以看出,不引用具体的类型库以及使用通用的对象类型就可以达到通用性。<br/>3、前期绑定和后期绑定<br/>要创建一个使用前期绑定方式的对象变量,也就是说,在程序编译时就完成绑定,则对象变量在声明时应指定类 ID,如:Dim acadApp As AcadApplication。<br/>使用 As Object 子句声明对象变量,可以创建一个能包含任何类型对象引用的变量。不过,该变量访问对象是后期绑定的,也就是说,绑定在程序运行时才进行,如:Dim acadApp As Object。<br/>前期绑定的变量引用可以提供更好的性能,但该变量只能存放声明中所指定的类的引用。<br/>而后期绑定的变量引用可以提供更好的通用性。<br/>4、依赖于版本和独立于版本<br/>如果 CreateObject 或 GetObject 函数使用的 ProgID 没有附加版本号,那么是独立于版本的,否则是依赖于版本的。例如,如果使用的是 CreateObject,则 CreateObject ("AutoCAD.Application") 是独立于版本的,而 CreateObject ("AutoCAD.Application.15") 是依赖于版本的。<br/>5、VB 代码到 VBA 代码的转换<br/>在 VBA 的 IDE 环境中,使用“导入文件”将要转换的 VB 工程的模块、类模块以及窗体文件一一导入。接着将 VB 代码中所有的当前的文档 (acadDoc) 变量替换为 ThisDrawing,而AutoCAD 应用程序 (acadApp) 变量替换为 Application。同时删除定义的 AutoCAD 应用程序 (acadApp) 和当前的文档 (acadDoc) 变量,删除与 AutoCAD 应用程序连接的代码。注意:要转换 VB 代码的窗体部分,则窗体必须是用 UserForm 创建的。<br/>6、图形对象和非图形对象<br/>图形对象(也称为图元、实体对象)是组成图形的可见对象(例如直线、圆、光栅图像等)。非图形对象是指属于图形的一部分但不可见的(提示性的)对象,例如 Layers、 Linetypes、 DimStyles、 SelectionSets 等等。要创建这些对象,可使用 Add 方法。每一个对象都有用于特定目的的方法和特性,都有设置和检索扩展数据以及删除自己的方法。<img id="paperPicArea1" src="http://imgcache.qq.com/ac/qzone_v4/b.gif" style="DISPLAY: none; POSITION: relative;" alt=""/></p><p>---------------------------------------------</p><p>请看第5条</p>

hlh168 发表于 2008-7-6 08:47:00

本帖最后由 作者 于 2008-7-6 8:55:02 编辑 <br /><br /> <p><font color="#f709c7"><strong>先看看,学习一下,谢谢二楼,不过能不能帮我将上传的VBA代码改成为VB6代码呢?再次谢谢</strong></font></p>

monkeylzx 发表于 2011-7-13 10:29:45

来学习一下,多谢分享经验

cadzj 发表于 2011-7-13 22:17:56

环境设置可按上面所说。不过需要将ThisDrawing改成activedocument
页: [1]
查看完整版本: 如何将VBA代码转换为VB6代码