|
以改变选择字的颜色这个简单的功能为例进行说明。这样,以后可以在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(".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中的文字内容被修改为文本框中的内容。
|
|