本帖最后由 作者 于 2008-11-8 8:52:11 编辑
以改变选择字的颜色这个简单的功能为例进行说明。这样,以后可以在VB中设置窗体,然后再VBA中调用它。因为VB中设置窗体和书写代码比在VBA中的窗体方便的多咯。一些控件在VBA中不能用,控件也不能编组。所以有此想法,将窗体和一些代码在VB环境下设好,然后打包为DLL,再在VBA中调用它。 1、在VB环境下: 创建一个ActiveX DLL工程,然后添加一个窗体和模块,这里模块的作用是用于定义全局变量。再在窗体上添加一个按钮与文本框。 在窗体(Form1)中输入如下代码: Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long Private m_oApp As Object Public Property Set Application(ByVal vNewValue As Object) Set m_oApp = vNewValue End Property Private Sub Command1_Click() acadDoc.Utility.GetEntity pTxtObj, pBasePt, vbNewLine & "请选择文字:" Text1.Text = pTxtObj.TextString '修改颜色 With pTxtObj .TrueColor = pColor(0, 255, 0) '修改为绿色 End With '刷新 acadDoc.Application.Update End Sub Private Sub Form_Load() SetParent Me.hwnd, GetParent(GetParent(m_oApp.ActiveDocument.hwnd)) '获得当前活动文档 Set acadDoc = m_oApp.ActiveDocument End Sub '******************************** '名称:pColor函数 '作者:罗简单 '日期:2008-7-3 '功能:用户自定义颜色,颜色模式为RGB '******************************** '定义绿色 Public Function pColor(ByRef pRed As Integer, ByRef pGreen As Integer, ByRef pBlue As Integer) As AcadAcCmColor Dim icorgreen As AcadAcCmColor Set icorgreen = m_oApp.GetInterfaceObject("AutoCAD.AcCmColor.16") Call icorgreen.SetRGB(pRed, pGreen, pBlue) '用户自定义颜色 Set pColor = icorgreen End Function '文本框内容修改后,双击则将刚才文字的内容修改为文本框中的内容 Private Sub Text1_DblClick() pTxtObj.TextString = Text1.Text pTxtObj.Update End Sub
在模块中输入如下代码: Public acadDoc As AcadDocument ' 当前活动文档对象 Public pTxtObj As AcadText Public pBasePt As Variant 在类模块(ChangeTextColor)中输入如下代码: Private m_oApp As Object Public Property Set Application(ByVal vNewValue As Object) Set m_oApp = vNewValue End Property Public Sub ShowForm() Set Form1.Application = m_oApp Form1.Show End Sub 最后进行打包,生成ChangeTextColor.dll 2、在CASS中的VBA环境下 引用刚才生成的DLL文件,然后新建过程,输入如下代码: Sub tt() Dim myForm As New ChangeTextColor Set myForm.Application = Application myForm.ShowForm End Sub 这个过程只是在CASS环境中把窗体调用出来了,其他操作的代码在窗体中,这样就可以将VB中的窗体和代码在VBA的环境下应用了。 3、程序的运行步骤如下: 运行VBA中的tt过程,调出了VB窗体,然后单击按钮,选择文字,文件颜色将变为绿色,并且文字内容出现在文本框内,修改文本框内的内容,然后双击文本框,这样CAD中的文字内容被修改为文本框中的内容。 |