wangya_82 发表于 2006-10-23 21:27:00

VBA中如何使用COM组件

<P>用vba如何才能使用com接口,使用那里面的属性</P>
<P>下面这个只能通过选择集调用,不知还有什么方式可以呢?请指教</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">Sub test()<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">Dim sset As AcadSelectionSet<o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">Dim name As String<o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">name = <FONT face="Times New Roman">“</FONT>sset<FONT face="Times New Roman">”<o:p></o:p></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp; <o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">Set sset = ThisDrawing.SelectionSets.Add(name)<o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">On Error GoTo ErrorHandler:<o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">sset.SelectOnScreen<o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp; <o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">Dim ent As CEB_SpotObjectCOM<o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">For Each ent In sset<o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; With ent<o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Point.X = 100<o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Point.Y = 100<o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; End With<o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; ent.Update&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">Next ent<o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp; <o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">ErrorHandler:<o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">sset.Delete<o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">Set sset = Nothing<o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">End Sub<o:p></o:p></P>

mccad 发表于 2006-10-24 17:50:00

置顶的两个类其实就是对COM接口的调用

wangya_82 发表于 2006-10-25 23:08:00

<P>可是能不能不通过选择集直接调用呢,你看这样的问题在哪?</P>
<P>Dim X As New ceb_spotobjectcom</P>
<P>Sub TMPT()<BR>Dim a As acadline<BR>Dim b(2) As Double, c(2) As Double<BR>b(0) = 0: b(1) = 0: b(2) = 0<BR>c(0) = 100: c(1) = 100: c(2) = 0<BR>Set a = ThisDrawing.ModelSpace.AddLine(b, c)<BR>Set X.Object= a<BR>End Sub</P>
<P>&nbsp;</P>
页: [1]
查看完整版本: VBA中如何使用COM组件