Vbaload Lisp
如何加载。dvb文件的VBALOAD,然后运行它的VBARUN所有的一个LISP?(vl-vbarun "filename.dvb!module.sub")
另请参见:http://www.caddzone.com/autovbaload.lsp 它不工作,因为我必须加载。运行前的dvb文件
谢谢你的帮助 >>(vl vbarun“filename.dvb!module.sub”))
>>它不工作,因为我必须加载。运行前的dvb文件
它只需要稍微调整一下,仅此而已。从结尾去掉第二个圆括号,并使用*双*斜杠将完整驱动器\路径名放在那里。
例如:
您有一个名为“MyProgram.dvb”的VBA程序,位于名为“Y:\MyFolder”的驱动器文件夹中
VBA程序希望运行名为“MySub”的子程序,该子程序位于代码模块“MyModule”中
加载命令的格式如下:
(vl-vbarun "Y:\\MyFolder\\MyProgram.dvb!MyModule.MySub")
您可以使用:
(defun Load_And_Run_VBA(File Procedure / cFile)
(vl-load-com)
(defun Get_VBP_List(/ cPr cPat VBPrj pQnt pCnt prLst)
(setq VBPrj(vlax-get
(vla-get-VBE
(vlax-get-acad-object))
'VBProjects)
pQnt(vla-get-Count VBPrj)
pCnt 1)
(repeat pQnt
(setq cPr(vla-Item VBPrj pCnt))
(if(vl-catch-all-error-p
(setq cPat(vl-catch-all-apply
'vlax-get(list cPr 'FileName))))
(setq prLst(cons "*Invalid Project*" prLst))
(setq prLst(cons cPat prLst))
); end if
(setq pCnt(1+ pCnt))
); end repeat
prLst
); end of Get_VBP_List
(if(setq cFile(findfile File))
(progn
(if(not(member cFile(Get_VBP_List)))
(vl-vbaload cFile)
); end if
(vl-vbarun Procedure)
); end progn
(princ
(strcat "\n<!> Can't to find VBA Project: '"
File "' <!> "))
); end if
(princ)
); end of Load_And_Run_VBA
例如:
(Load_And_Run_VBA "C:\\My VBA Routines\\My program.dvb" "MyProcedure")
此代码检查已加载*的列表。dvb文件和加载VBA程序仅一次,但每次都会运行。
错误的该示例将加载DVB文件并运行指定的宏。如果DVB不在支持文件搜索路径中,则需要指定路径,如下所示:
(vl-vbarun "\\\\server\\share\\dir\\filename.dvb!module.sub")
谢谢大家,我在附件中制作了Lisp,效果很好,我需要你们的帮助。再次感谢
VB。LSP
页:
[1]