[原创][函数]让VBA程序的加载执行更简单
本帖最后由 作者 于 2004-10-26 7:34:49 编辑一直以来,VBA程序的加载执行都是大家讨论的热点,而且一直也没有一种非常简单的方法来解决。以下给出的这种方法到目前为止应该是最简单的方法:(vl-load-com)
;;自动加载VBA程序的函数
;;本函数由明经通道mccad开发,版权所有,复制使用时请保留版权信息
(defun AutoVBALoad (app cmdliste / qapp )
(setq qapp (strcat "\"" app "\""))
(mapcar
'(lambda (cmd / nom_cmd dot nodotcmd)
(progn
(setq dot (vl-string-search "." cmd))
(if dot
(setq nodotcmd (substr cmd (+ dot 2)))
(setq nodotcmd cmd)
)
(setq nom_cmd (strcat "C:" nodotcmd))
(eval
(read (strcat
"(defun " nom_cmd "( / rtn)"
"(if (setq app(fdvbfile " qapp "))"
"(vl-vbarun (strcat app \"!" cmd "\"))"
"(nodvbfile " qapp "))"
"(princ))"
)
)
)
)
)
cmdliste
)
nil
)
(defun fdvbfile(app)
(if (not (findfile app))
(if (not (findfile (strcat app ".dvb")))
nil
(strcat app ".dvb")
)
app
)
)
(defun nodvbfile (filename)
(princ (strcat "\n文件 " filename
"(.dvb) 在搜索路径文件夹中未找到。" ) )
(princ "\n请检查支持文件的安装,然后重试。")
(princ)
)函数的使用方法就象AutoLISP中的autoload函数:
(AutoVBALoad "dvb文件" 过程名列表))
例如DrawLine.dvb文件中有两个过程,一个在Thisdrawing模块中的Draw2Line过程,一个在Draw模块中的Draw3Line过程。则可以通过以下LISP语句来定义命令,这样则可以在命令行中使用Draw2Line或Draw3Line执行相对应的过程。
(AutoVBALoad "DrawLine" '("Draw2Line" "Draw.Draw3Line"))
虽然我还不会用,但对明兄的无私奉献,也要狂顶一下 要是不用输入过程名列表就好了,对于未加密的DVB可以通过VBE对象获得过程名列表,加密的有没有办法获得? 恩!小弟认为加不加密还是其次,因为作者不让你看还是不要勉强的好!最主要的是好像不太实用(老大各位不要用西红柿攻击偶哦,我会拿它做番茄炒蛋的^_^Y)!小弟水平有限!HOHO!但小弟有个想法可不可以这样实现这个程序?先做个LSP里的命令,运行后加载DVB文件!然后弹出下列对话框进行编辑!
把完全命令和简写命令按字母顺序写进cad.pgp这样一来应该可以!不知道小弟的这一想法能否实现?如有不成熟的地方还请指教! 哈哈!哈哈哈哈!不错啊!有创意!我喜欢!
页:
[1]