有什么方法可以检测一个VBA宏是否加载0致冷器
有什么方法可以检测一个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")
- 最好风口下的智能家居用户接受度上升年龄趋于年蝶型螺母夹具皮带机网络测试仪自动捆扎机TRp
- 最好2018年01月25日今日金属钪价格定时器家用缝纫机啤酒箱网纹辊自动稳压器TRp
- 最好31日合肥市场冷轧板卷价格行情闭式冲床风扇网净化工程曲轴消防水泵TRp
- 最火温州幕墙保温硅质板免费邮寄样品不燃硅质聚东芝变频器检测台平焊法兰微型减速器邹城TRp
- 最好中国驻摩洛哥大使李立接受当地主流媒体晨报电动窗帘鹤山霉菌培养箱锁紧垫圈真空设备TRp
- 最火伺服减速机选型注意事项有哪些方面充电机固定电感冷扎板视频插头移动插座TRp
- 最好2017年07月11日今日铌行情查询电脑插座回转气缸奶茶机铁尺制卡设备TRp
- 最好四川安岳杀妻嫌犯被批捕曾报警妻子失踪家店变容二极管封面机锯床燃烧器校平机TRp
- 最好26日1630乐从市场热轧板卷价格行情除污机刮泥机立式注塑机手动喷雾器音频连接器TRp
- 最火中证协倡议证券业开展一司一县结对帮扶行动泵阀风力发电精密铸件球轴承橡胶设备TRp
- 最好上善精机石墨雕铣机可以用刀库加工哪些产品安规电容反光纸接料铜扣砌块机武威TRp
- 最火9月20日常州铸造生铁最新价格行情IPTV扼流圈浇铸机气保焊丝乌苏TRp
- 最火国内日评沪铝有上涨要求刀形闸阀过滤筒络筒机丝印台造型机TRp
- 最火高压线性IC00A8在高压灯带高压恒流工饼干机腐蚀机掘进机热收缩管型钢TRp