VBE 属性 (ActiveX) 
获取 VBAIDE 扩展性对象。 支持的平台:仅限 Windows 属性值只读:是的 类型:Microsoft VBE 对象 VBAIDE 扩展性对象。 言论此特性允许您从AutoCAD的对象模型访问VBA IDE对象模型。如果 VBAIDE 不可用,则该属性将引发异常。例如,如果尚未加载 acvba.arx 应用程序,则 VBAIDE 不可用。 以下代码行返回活动 VBA 项目描述字符串的名称: ThisDrawing.Application.VBE.ActiveVBProject.Description 例子VBA: Sub Example_VBE()
    ' This example uses the VBA IDE extensibility model to dynamically
    ' create a VBA subroutine. After running this example, see the first line of code
    ' in the VBA IDE code window to see a new subroutine. Then 
    ' remove the new subroutine before continuing.
    Dim VBEModel As Object
    Dim newRoutine As String
    
    Set VBEModel = VBE  ' Get the VBE object
    
    ' Define new subroutine to be added. This could be created dynamically from user feedback.
    newRoutine = "Sub Dynamic_Procedure()" & vbCrLf
    newRoutine = newRoutine & vbTab & "MsgBox ""New subroutine.""" & vbCrLf
    newRoutine = newRoutine & "End Sub" & vbCrLf
    
    ' Insert new subroutine
    VBEModel.CodePanes(1).CodeModule.InsertLines 1, newRoutine
    
    MsgBox "A new subroutine was added called Dynamic_Procedure."
End Sub
可视化 LISP: (vl-load-com)
(defun c:Example_VBE()
    ;; This example uses the VBA IDE extensibility model to dynamically
    ;; create a VBA subroutine. After running this example, see the first line of code
    ;; in the VBA IDE code window to see a new subroutine. Then 
    ;; remove the new subroutine before continuing.
    ;; Note: You might need to add a code module to the default project first.
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    (setq VBEModel (vla-get-VBE acadObj))  ;; Get the VBE object
    
    ;; Define new subroutine to be added. This could be created dynamically from user feedback.
    (setq newRoutine (strcat "Sub Dynamic_Procedure()"
                             "\n    MsgBox \"New subroutine.\""
                             "\nEnd Sub"))
    
    ;; Insert new subroutine
    (vlax-invoke-method (vlax-get-property (vlax-invoke-method (vlax-get-property VBEModel 'CodePanes) 'Item 1) 'CodeModule) 'InsertLines 1 newRoutine)
    
    (alert "A new subroutine was added called Dynamic_Procedure.")
)
 | 
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1   苏公网安备32011402011833)
GMT+8, 2025-11-4 23:58
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.