昊丰五金网 >> 工业风扇

有什么方法可以检测一个VBA宏是否加载0陶瓷阀片

2022-08-03

有什么方法可以检测一个VBA宏是否加载?

有什么方法可以检测一个VBA宏是否加载? 2011年12月10日 来源: 在AutoCAD 2000中,你可以获取一个属性名叫VBE的ActiveX应用程序对象。它使你可以访问VBAIDE扩展对象。这个对象拥有方法和属性允许你判断一个工程是否已经加载。 如果你想深入学习,就请启动VBAIDE,添加一个对"Microsoft Visual Basic for Applications Extensibility"的引用,然后你就可以在你的ObjectBrowser (F2)浏览此对象了。 以下是四个例子。第一个"loadMyProcedure"检测所有已经加载的工程名。如果没有发现"TestMenuEcho",就加载它。 第二个例子"testMacros"在每一个加载的模块中搜索每一行并且在立即窗口中 (cntrl + G)打印true或者false。目的在于寻找文本"test4"(宏的名字)。 第三个例子"displayLoadedProjects"在信息窗口中显示所有已加载的工程。 第四个例子是一个LISP例程。它使用相同的ActiveX对象判断一个工程是否已经加载,如果没有,就加载它。 Public Sub loadMyProcedure() Dim int1 As Integer Dim bProjectLoaded As Boolean ' Iterate through all the projects For int1 = 1 To Application.VBE.VBProjects.Count ' Make the test boolean variable to true if the Project I want to load ' is already loaded, Change TestMenuEcho to the name of your project If Application.VBE.VBProjects(int1).Name = "TestMenuEcho" Then ' Debug.Print Application.VBE.VBProjects(int1).Name bProjectLoaded = True End If Next int1 ' Display a message if my the project is already loaded ' if it isn't then load it, change the directory and ' name to that of your project If bProjectLoaded = True Then MsgBox "TestMenuEcho is already loaded" Else MsgBox "Going to load the project TestMenuEcho" Application.LoadDVB "D:\Vba-apps\a-2000\menuecho in menu.dvb" End If End Sub Public Sub testMacros() Dim int1 As Integer Dim int2 As Integer ' Iterate through all the loaded projects For int1 = 1 To Application.VBE.VBProjects.Count ' Name of loaded project Debug.Print Application.VBE.VBProjects(int1).Name ' Iterate through the text of each module looking for "test4" For int2 = 1 To Application.VBE.VBProjects(int1).VBComponents.Count ' Get the number of lines in each module - use in the ' find method below Dim L As Long L = Application.VBE.VBProjects(int1).VBComponents(int2) _ .CodeModule.CountOfLines Debug.Print Application.VBE.VBProjects(int1).VBComponents(int2) _ .CodeModule.Find("test4", 1, 1, L, 1, False, False) Next int2 Next int1 End Sub Public Sub displayLoadedProjects() Dim strProjectNames Dim int1 As Integer strProjectNames = "Names of loaded projects " & vbCrLf For int1 = 1 To Application.VBE.VBProjects.Count strProjectNames = strProjectNames + Application.VBE.VBProjects(int1).Name & vbCrLf Next int1 MsgBox strProjectNames End Sub (defun c:loadMyProject () ;; This routine will load a project if it is not already loaded ;; the VBE (VB extensibility) ActiveX object is used to reference ;; the loaded projects ;; Load ActiveX(vl-load-com) ;; Get the VBE extisibility object(setq acadObject (vlax-get-acad-object)) (setq acadVbe (vla-get-vbe acadObject)) (setq acadVbeProjects (vlax-get-property acadVbe 'VBProjects)) ;; Get the number of loaded VBA projects (setq int1 (vlax-get-property acadVbeProjects 'count)) ;; Counter and test variable named loaded(setq int2 1) (setq loaded "False") ;; Repeat for each project(repeat int1 ;; Itereate through the projects, getting the name of ;; next project, each time through(setq Item (vlax-invoke-method acadVbeProjects 'Item int2)) (setq pName (vlax-get-property Item 'Name)) ;; Test the name for the name of the project I want to load ;; If it is already loaded the set the test variable to True (if (= pName "my_test_project") (progn (prompt "\nmy_test_project is already loaded\n") (Setq Loaded "True")

战术靴牌子

户外登山鞋的选择

户外登山鞋品牌排行榜

专业户外登山鞋

户外徒步登山鞋

友情链接