VBE プロパティ(ActiveX)

VBAIDE 拡張オブジェクトを取得します。

サポートされているプラットフォーム: Windows のみ

構文と要素

VBA:

object.VBE
object

タイプ: Application

このプロパティが適用されるオブジェクト。

プロパティの値

読み込み専用: はい

タイプ: 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

Visual 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.")
)