找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4902|回复: 16

[EXCEL] XD::Excel:getactiveSheet获取当前活动表格

[复制链接]

已领礼包: 344个

财富等级: 日进斗金

发表于 2014-11-11 22:56:22 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::Excel:getactiveSheet
调用格式: (XD::Excel:getactiveSheet)
参数说明:
返回值: 成功返回(索引号 表单名称),否则返回nil,
注:索引号从0开始
函数简介: 获取当前活动表格,成功返回(索引号 表单名称),
函数来源: 原创
函数作者:
适用版本: 不限 
最后更新时间: 2014-11-11
备注: 获取当前活动表格成功返回(索引号 表单名称),否则返回nil,注:索引号从0开始
演示图片: -

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

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

×
  1. ;;获取当前活动表格成功返回(索引号 表单名称),否则返回nil,注:索引号从0开始
  2. (defun XD::Excel:getactiveSheet (/ sh)
  3.   (or
  4.     **XD::Excel**
  5.     (setq **XD::Excel** (vlax-get-or-create-object "Excel.Application"))
  6.   )
  7.   (setq sh (vlax-get-property **XD::Excel** 'activesheet))
  8.   (list (1- (vlax-get-property sh 'index)) (vlax-get-property sh 'name))
  9. )

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

已领礼包: 8612个

财富等级: 富甲天下

发表于 2014-11-11 23:34:53 | 显示全部楼层
和xdex_book_getActiveSheet不是一样的吗?

点评

G版今天提供的几个函数是对打开的EXCEL操作的,XDEXCEL库是对没打开的或者存盘的EXCEL操作的。打开的EXCEL而没存盘中间的操作,只能通过COM来获取。 比如,你打开一个EXCEL,然后用鼠标拉了一个范围,这个范围只  详情 回复 发表于 2014-11-12 00:03
G版的是 COM 方式,需要安装 Excel 情况下使用, XdEx 是用一个库文件直接读写 xls(x) 文件,和 Excel 程序没关系  详情 回复 发表于 2014-11-11 23:52
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2014-11-11 23:52:45 来自手机 | 显示全部楼层
liuyj 发表于 2014-11-11 23:34
和xdex_book_getActiveSheet不是一样的吗?

G版的是 COM 方式,需要安装 Excel 情况下使用, XdEx 是用一个库文件直接读写 xls(x) 文件,和 Excel 程序没关系

点评

提供这几个COM函数,是让XDEXECL库应用更广,没打开的,和打开操作中的EXCEL都可以读取到CAD里面画表格。  详情 回复 发表于 2014-11-12 00:05
让G版写这几个函数,主要是对打开的EXCEL文件,用户选择了哪个SHEET操作,鼠标拉了多大的范围返回给LISP。 这些打开而没存盘的文件,XDEXCEL库是得不到文件信息的。 这几个函数主要是对打开的EXCEL文件的操作。返  详情 回复 发表于 2014-11-11 23:59
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-11-11 23:59:35 | 显示全部楼层
iLisp 发表于 2014-11-11 23:52
G版的是 COM 方式,需要安装 Excel 情况下使用, XdEx 是用一个库文件直接读写 xls(x) 文件,和 Excel 程 ...

让G版写这几个函数,主要是对打开的EXCEL文件,用户选择了哪个SHEET操作,鼠标拉了多大的范围返回给LISP。 这些打开而没存盘的文件,XDEXCEL库是得不到文件信息的。

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-11-12 00:03:23 | 显示全部楼层
liuyj 发表于 2014-11-11 23:34
和xdex_book_getActiveSheet不是一样的吗?

G版今天提供的几个函数是对打开的EXCEL操作的,XDEXCEL库是对没打开的或者存盘的EXCEL操作的。打开的EXCEL而没存盘中间的操作,只能通过COM来获取。

比如,你打开一个EXCEL,然后用鼠标拉了一个范围,这个范围只能通过COM得到。得到范围后,交给XDEXCEL库去操作了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-11-12 00:05:12 | 显示全部楼层
iLisp 发表于 2014-11-11 23:52
G版的是 COM 方式,需要安装 Excel 情况下使用, XdEx 是用一个库文件直接读写 xls(x) 文件,和 Excel 程 ...

提供这几个COM函数,是让XDEXECL库应用更广,没打开的,和打开操作中的EXCEL都可以读取到CAD里面画表格。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-12-29 13:02:25 来自手机 | 显示全部楼层
待验证,感觉Excel在Com表现上是两个进程,仅打开Excel是get不到的,还得create一个后台进程
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-30 14:48:10 | 显示全部楼层
XDSoft 发表于 2014-11-12 00:05
提供这几个COM函数,是让XDEXECL库应用更广,没打开的,和打开操作中的EXCEL都可以读取到CAD里面画表格。 ...

使用环境 Windows 7 32bit + Office 2013

用户直接点击打开 XLS,Excel 已经运行,在Autocad 用使用 (vlax-get-object "Excel.Application") 是得不到这个 Excel 进程的,如果使用 (vlax-get-or-create-object "Excel.Application") 就会创建一个后台进程,这个进程才是Autocad 能够控制的,将其 Visible 显示,这里面打开的 XLS 才能使用 ActiveSheet 等,单独运行的 Excel 是不能获取的

点评

问题是需要得到用户当前正在用鼠标选过的范围,你用后台是做不到的。 G版的函数测试过,在打开的EXCEL文件里面,鼠标选中的区域,函数是能即时得到结果的。  详情 回复 发表于 2014-12-30 15:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2014-12-30 15:11:30 | 显示全部楼层
st788796 发表于 2014-12-30 14:48
使用环境 Windows 7 32bit + Office 2013

用户直接点击打开 XLS,Excel 已经运行,在Autocad 用使用 ( ...

问题是需要得到用户当前正在用鼠标选过的范围,你用后台是做不到的。
G版的函数测试过,在打开的EXCEL文件里面,鼠标选中的区域,函数是能即时得到结果的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2014-12-30 15:17:14 | 显示全部楼层
打开EXCEL文件后,随着创建新的SHEET,函数运行如下:

命令: (XD::EXCEL:GETACTIVESHEET)
(0 "abc")

命令: (XD::EXCEL:GETACTIVESHEET)
(1 "Sheet1")

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-30 18:38:55 来自手机 | 显示全部楼层
Lispboy 发表于 2014-12-30 15:17
打开EXCEL文件后,随着创建新的SHEET,函数运行如下:

命令: (XD::EXCEL:GETACTIVESHEET)

双击一个xls文件,选择一个区域,到cad中试试

点评

我上面贴的获取当前激活的SHEET,就是双击XLS打开后做的  详情 回复 发表于 2014-12-30 19:21
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2014-12-30 19:21:31 | 显示全部楼层
st788796 发表于 2014-12-30 18:38
双击一个xls文件,选择一个区域,到cad中试试

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-30 19:23:59 | 显示全部楼层
Lispboy 发表于 2014-12-30 19:21
我上面贴的获取当前激活的SHEET,就是双击XLS打开后做的

Window7(32bit) + Excel 2013 Autocad 2008 / 2012 测试通不过

点评

我是 WIN7 64位 + Excel 2013 +Autocad 2008 32位 从COM机理来讲,get object应该就是获得当前正在激活的那个Excel 窗口对象的。否则应用程序间还怎么传递数据。  详情 回复 发表于 2014-12-30 19:34
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2014-12-30 19:34:47 | 显示全部楼层
st788796 发表于 2014-12-30 19:23
Window7(32bit) + Excel 2013 Autocad 2008 / 2012 测试通不过

我是  WIN7 64位 + Excel 2013 +Autocad 2008 32位{:soso_e103:}

从COM机理来讲,get object应该就是获得当前正在激活的那个Excel 窗口对象的。否则应用程序间还怎么传递数据。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-30 19:36:48 | 显示全部楼层
Lispboy 发表于 2014-12-30 19:34
我是  WIN7 64位 + Excel 2013 +Autocad 2008 32位

从COM机理来讲,get object应该就是 ...

点击运行的不是 COM 对象,用 create 创建的才是

点评

ACAD下面的COM函数获得的应用程序对象应该就是当前激活的正在操作的EXCEL对象,和是否双击打开文件还是直接运行EXCEL再打开XLS文件无关。打开多个EXCEL文件,都能正确的获得正在激活操作的那个窗口的数据,上面的测  详情 回复 发表于 2014-12-30 20:09
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 13:56 , Processed in 0.237091 second(s), 72 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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