乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 81|回复: 4

[原创][函数]让VBA程序的加载执行更简单

[复制链接]

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2004-10-25 22:06:00 | 显示全部楼层 |阅读模式
一直以来,VBA程序的加载执行都是大家讨论的热点,而且一直也没有一种非常简单的方法来解决。以下给出的这种方法到目前为止应该是最简单的方法:
  1. (vl-load-com)
  2. ;;自动加载VBA程序的函数
  3. ;;本函数由乐筑天下mccad开发,版权所有,复制使用时请保留版权信息
  4. (defun AutoVBALoad (app cmdliste / qapp )
  5.    (setq qapp (strcat """ app """))
  6.    (mapcar
  7.        '(lambda (cmd / nom_cmd dot nodotcmd)
  8.              (progn
  9.    (setq dot (vl-string-search "." cmd))
  10.    (if   dot
  11.        (setq nodotcmd (substr cmd (+ dot 2)))
  12.        (setq nodotcmd cmd)
  13.    )
  14.    (setq nom_cmd (strcat "C:" nodotcmd))
  15.    (eval
  16.            (read (strcat
  17.              "(defun " nom_cmd "( / rtn)"
  18.                  "(if (setq app(fdvbfile " qapp "))"
  19.                      "(vl-vbarun (strcat app "!" cmd ""))"
  20.                      "(nodvbfile " qapp "))"
  21.              "(princ))"
  22.            )
  23.            )
  24.    )
  25.              )
  26.          )
  27.        cmdliste
  28.    )
  29.    nil
  30. )(defun fdvbfile  (app)
  31.    (if (not (findfile app))
  32.        (if (not (findfile (strcat app ".dvb")))
  33.            nil
  34.            (strcat app ".dvb")
  35.        )
  36.        app
  37.    )
  38. )
  39.       
  40. (defun nodvbfile (filename)
  41.    (princ (strcat "\n文件 " filename
  42.          "(.dvb) 在搜索路径文件夹中未找到。" ) )
  43.    (princ "\n请检查支持文件的安装,然后重试。")
  44.    (princ)
  45. )
函数的使用方法就象AutoLISP中的autoload函数:
(AutoVBALoad "dvb文件" 过程名列表))
例如DrawLine.dvb文件中有两个过程,一个在Thisdrawing模块中的Draw2Line过程,一个在Draw模块中的Draw3Line过程。则可以通过以下LISP语句来定义命令,这样则可以在命令行中使用Draw2Line或Draw3Line执行相对应的过程。
(AutoVBALoad "DrawLine" '("Draw2Line" "Draw.Draw3Line"))
回复

使用道具 举报

4

主题

19

帖子

2

银币

初来乍到

Rank: 1

铜币
35
发表于 2004-10-28 23:15:00 | 显示全部楼层
虽然我还不会用,但对明兄的无私奉献,也要狂顶一下
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-10-29 09:09:00 | 显示全部楼层
要是不用输入过程名列表就好了,对于未加密的DVB可以通过VBE对象获得过程名列表,加密的有没有办法获得?
回复

使用道具 举报

18

主题

46

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2004-11-2 10:52:00 | 显示全部楼层
恩!小弟认为加不加密还是其次,因为作者不让你看还是不要勉强的好!最主要的是好像不太实用(老大各位不要用西红柿攻击偶哦,我会拿它做番茄炒蛋的^_^Y)!小弟水平有限!HOHO!但小弟有个想法可不可以这样实现这个程序?先做个LSP里的命令,运行后加载DVB文件!然后弹出下列对话框进行编辑!

alqzdvxg0rk.bmp

alqzdvxg0rk.bmp


把完全命令和简写命令按字母顺序写进cad.pgp这样一来应该可以!不知道小弟的这一想法能否实现?如有不成熟的地方还请指教!
回复

使用道具 举报

55

主题

282

帖子

5

银币

中流砥柱

Rank: 25

铜币
502
发表于 2004-11-5 16:30:00 | 显示全部楼层
哈哈!哈哈哈哈!不错啊!有创意!我喜欢!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-16 15:05 , Processed in 0.439801 second(s), 65 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表