找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5412|回复: 19

[他山之石] Vlisp连接Word初步

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-4-12 08:56:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Vlisp 和 Excel通讯的例子很多了,这几天和一个朋友探讨Vlisp和Word通讯,一点心得与大家分享。

Word VBA 和Excel VBA都是MS自家东西,很多是相通的,对我这没有VBA基础的结合CAD VBA模型理解 Word VBA模型会更容易些。

首先建立 word 连接
  1. (setq wrdapp (vlax-get-or-create-object "Word.Application"))
获取Documents集合
  1. (setq docs (vlax-get wrdapp 'documents))
在集合中用Open 打开 文档
  1. (setq doc (vlax-invoke docs 'open filename))
简单的方法,获取刚刚打开的文档
  1. (setq doc (vla-item docs filename));;此处用刚才的文件名,包括扩展名
获取文档中的所有表格集合
  1. (setq tbs (vlax-get doc 'tables))
获取指定的表格
  1. (setq tb (vlax-get tbs index));;_由 1 排起
获取指定的单元格
  1. (setq cell (vlax-invoke tb 'cell 1 1));_第一行第一列
获取指定单元格的Range
  1. (setq range (vlax-get cell 'Range))
获取该单元格的Text
  1. (setq txt (vlax-get range 'Text))
待续

评分

参与人数 3威望 +2 D豆 +12 收起 理由
ScmTools + 5 技术引导讨论和指点奖!
wkai + 2 + 5 技术引导讨论和指点奖!
炫翔 + 2 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1742个

财富等级: 堆金积玉

发表于 2013-4-12 09:10:05 | 显示全部楼层
{:soso_e183:}支持,很简洁!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 188个

财富等级: 日进斗金

发表于 2013-4-12 09:27:06 来自手机 | 显示全部楼层
现在用手机看不到代码,回头电脑好好学习。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-4-12 09:31:38 | 显示全部楼层
eachy老大,能给贴个和EXCEL交互的代码吗?我平时工作和EXCEL接触的比较多,谢谢了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2013-4-12 16:59:00 | 显示全部楼层
CAD Excel 通讯Lisp资料太多了,用Google搜索一箩筐,其中一个
http://web2.airmail.net/terrycad/LISP/GetExcel.lsp
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 394个

财富等级: 日进斗金

发表于 2013-4-12 23:03:47 | 显示全部楼层
这个要学习了,支持.:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8727个

财富等级: 富甲天下

发表于 2013-4-13 07:56:54 | 显示全部楼层
感謝分享資料:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-4-27 14:54:07 | 显示全部楼层
有用~谢谢了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3394个

财富等级: 富可敌国

发表于 2013-4-30 19:17:21 | 显示全部楼层
好东西,谢谢楼主分享!!!!!!!!!:lol
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-5-2 10:07:16 | 显示全部楼层
支持,很简洁!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2013-5-3 01:38:50 | 显示全部楼层
这个经典。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2013-7-3 10:24:48 | 显示全部楼层
测试: 在已知Word文档表格内写字
  1. ;;建立连接
  2. (defun vlx-wrdapp ()
  3.   (vlax-get-or-create-object "Word.Application")
  4. )
  5. ;;获取文档集合
  6. (defun vlx-wrddocs (wrdapp)
  7.   (vlax-get wrdapp 'documents)
  8. )
  9. ;;打开文档
  10. (defun vlx-wrdopen (docs fn)
  11.   (vlax-invoke docs 'open fn)
  12. )
  13. ;;获取指定文件名文档
  14. (defun vlx-wrddoc (docs fn)
  15.   (vla-item docs fn)
  16. )
  17. ;;获取指定文档内所有表格
  18. (defun vlx-wrdtbs (doc)
  19.   (vlax-get doc 'tables)
  20. )
  21. ;;获取指定表格,顺序由 1 开始
  22. (defun vlx-wrdtb (tbs index)
  23.   (vla-item tbs index)
  24. )
  25. ;;获取指定表格的单元格, 行、列由 1 起始
  26. (defun vlx-wrdcell (tb NumRows NumColumns)
  27.   (vlax-invoke tb 'cell numrows numcolumns)
  28. )
  29. ;;获取指定单元格的 Range
  30. (defun vlx-wrdcellrange (cell)
  31.   (vlax-get cell 'Range)
  32. )
  33. ;;获取 Range 的 Text
  34. (defun vlx-wrdcell-gettext (range)
  35.   (vlax-get range 'Text)
  36. )
  37. ;;设置 Range 的 Text
  38. (defun vlx-wrdcell-settext (range string)
  39.   (vlax-put range 'Text string)
  40. )
  41. ;;保存文档
  42. (defun vlx-wrdsave (wrdapp)
  43.   (vlax-invoke wrdapp 'save)
  44. )
  45. (defun c:tt (/ wrdapp fn docs doc tb)
  46.   (setq wrdapp (vlx-wrdapp))
  47.   (vla-put-visible wrdapp :vlax-true)
  48.   (if (setq fn (getfiled "选择DOC文档" "" "DOC;DOCX" 8))
  49.     (progn
  50.       (setq docs (vlx-wrddocs wrdapp))
  51.       (vlx-wrdopen docs fn)
  52.       (setq doc (vlx-wrddoc docs fn)
  53.      tb (vlx-wrdtb (vlx-wrdtbs doc) 1)
  54.       )
  55.       (mapcar
  56. '(lambda (cell string)
  57.     (vlx-wrdcell-settext
  58.       (vlx-wrdcellrange (vlx-wrdcell tb (car cell) (cadr cell)))
  59.       string
  60.     )
  61.   )
  62. '((1 1) (1 2) (2 1) (2 2) (3 1) (3 2))
  63. '("1-1" "1-2" "2-1" "2-2" "3-1" "3-2")
  64.       )
  65.     )
  66.   )
  67.   (vlax-release-object wrdapp)
  68.   (princ)
  69. )

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1861个

财富等级: 堆金积玉

发表于 2014-4-20 12:04:56 | 显示全部楼层

比较两点是否相等,返回值不一样

用lisp怎么在WORD中创建表格呢?

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-4-20 12:14:57 来自手机 | 显示全部楼层
aimisiyou 发表于 2014-4-20 12:04
用lisp怎么在WORD中创建表格呢?

这样用lisp累不累!

点评

可以输出到EXCEL,但如果能在WORD中创建表格更好。  详情 回复 发表于 2014-4-23 21:18
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1861个

财富等级: 堆金积玉

发表于 2014-4-21 10:47:56 | 显示全部楼层
回楼上的!我这样问是有原因的,我要把CAD中的图元信息输入到WORD表格中。当然我可以先在WORD中很轻松的做个表格格式,然后命名保存,再用lisp程序将图元信息输入到WORD表格中,这就要做两部工作,但我想一步到位,直接在lisp中创建表格同时将图元信息输入到表格中。编程序不就是为了人偷懒,电脑忙吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-20 15:35 , Processed in 0.314448 second(s), 65 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表