找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2802|回复: 9

[求助] MSXL-GET-ACTIVESHEET 在什么地方去装载?

[复制链接]
发表于 2015-2-10 23:31:20 | 显示全部楼层 |阅读模式

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

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

×
lisp是访问EXCEL,有的程序出现MSXL-GET-ACTIVESHEET  这个在哪?怎么装载,请指点...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2015-2-10 23:53:37 来自手机 | 显示全部楼层
你需要先初始化excel的,论坛里面有的,比如vlx–app–int函数,你可以搜一下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-11 08:46:01 | 显示全部楼层
在这里没看找到啊....
(Defun vlxls-app-Init (/ OSVar GGG Olb8 Olb9 Olb10 TLB Out msg msg1 msg2)
  ;;;;;;;;;;該程序實現了初始化EXCEL應用程序!
  (if *Chinese*
  (setq msg  "\n 初始化微軟Excel "
        msg1 "\042初始化Excel失敗\042"
        msg2 (strcat "\042 警告""\n ====""\n 無法在您的計算机上檢測到微軟Excel軟件"
              "\n 如果您确認已經安裝Excel, 請發送電子郵"
              "\n 件到yota@ikozmos.com獲取更多的解決方案\042"))
  (setq msg  "\n Initializing Microsoft Excel "
        msg1 "\042Initialization Error\042"
        msg2 (strcat "\042 WARNING""\n ======="
                     "\n Can NOT detect Excel97/200X/XP in your computer"
                     "\n If you already have Excel installed, please email"
                     "\n us to get more solution via yota@ikozmos.com\042"))
    )
(if (null msxl-xl24HourClock)
(progn (if (and (setq GGG (vl-registry-read
        "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Excel.EXE"
        "Path"))
(setq GGG (strcase (strcat GGG "Excel.EXE"))))
(progn (foreach OSVar (list "SYSTEMROOT" "WINDIR""WINBOOTDIR" "SYSTEMDRIVE"
           "USERNAME"  "COMPUTERNAME" "HOMEDRIVE" "HOMEPATH" "PROGRAMFILES")
   (if    (vl-string-search (strcat "%" OSVar "%") GGG)
          (setq GGG (vl-string-subst (strcase (getenv OSVar))
                      (strcat "%" OSVar "%")GGG)))
         )
(setq   Olb8  (findfile (vl-string-subst "EXCEL8.OLB" "EXCEL.EXE" GGG))
         Olb9  (findfile (vl-string-subst "EXCEL9.OLB" "EXCEL.EXE" GGG))
         Olb10 (findfile (vl-string-subst "EXCEL10.OLB" "EXCEL.EXE" GGG)))
(cond  ((= (vl-filename-base (vl-filename-directory GGG))"OFFICE11")
         (setq TLB GGG Out "2003"))
        ((= (vl-filename-base (vl-filename-directory GGG))
            "OFFICE10")
         (setq TLB GGG Out "XP"))
         (Olb9 (setq TLB Olb9 Out "2000"))
         (Olb8 (setq TLB Olb8 Out "97"))
         (t (setq Out "Version Unknown"))
        )
  (if TLB (progn (princ (strcat MSG Out "..."))
                 (vlax-import-type-library
                    :tlb-filename TLB
                    :methods-prefix "msxl-"
                    :properties-prefix "msxl-"
                    :constants-prefix "msxl-"))
    )
  )(progn (if vldcl-msgbox
             (vldcl-msgbox "x" msg1 msg2)
             (alert (read msg2)))
          (exit)))
  )
  )
  msxl-xl24HourClock
  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2015-2-12 00:34:10 | 显示全部楼层
((= $reason 4)
         (if (vl-file-size tf2)(setq xlapp (vlxls-app-open tf2 1)))
         (vlxls-app-Init)  
         (vla-put-visible Rtn 1)   ; 显示EXCEL                       
         (setq xlapp1 (vlxls-sheet-get-all xlapp))
         (if (member (strcat (itoa (+ l2 1)) "#屏") xlapp1)
            (vlxls-sheet-put-active xlapp (strcat (itoa (+ l2 1)) "#屏"))
            (vlxls-sheet-add xlapp (strcat (itoa (+ l2 1)) "#屏"))  
         )               
     )
双击时,"提示EXCEL的某个文件已打开,是否要重新打开"
我在(if (vl-file-size tf2)(setq xlapp (vlxls-app-open tf2 1))) 我想用这条语句判断文件是否打开如何修改?

点评

Excel 判断文件是否打开是一件复杂工作,用 COM 方式只能判断当前进程中该文件是否打开,你可以用(vlax-get-property workbooks 'Item "test.xls") 如果返回 workbook 再获取 FullName 属性就是全路径文件名,如果没  详情 回复 发表于 2015-2-12 08:34
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2015-2-12 08:34:40 | 显示全部楼层
挚友01 发表于 2015-2-12 00:34
((= $reason 4)
         (if (vl-file-size tf2)(setq xlapp (vlxls-app-open tf2 1)))
         (vlxls ...

Excel 判断文件是否打开是一件复杂工作,用 COM 方式只能判断当前进程中该文件是否打开,你可以用(vlax-get-property workbooks 'Item "test.xls") 如果返回 workbook 再获取 FullName 属性就是全路径文件名,如果没有打开就会抛出异常,这时就要用 vl-catch-all-apply 和 vl-catch-all-error-p

_$ (vl-catch-all-error-p (vl-catch-all-apply 'vlax-get-property (list wks "item" "test.xls")))
T

返回 T 说明没有打开这个文件

当然还有一种方法,直接用 Open 并且用可读写模式,如果出现异常说明该文件已经打开

expression.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad, OpenConflictDocument)

其中的
Notify   Variant 类型,可选。当该文件不能以可读写模式打开时,如果该参数的值为 True,则可将该文件添加到文件通知列表。Microsoft Excel 将以只读模式打开该文件并轮询文件通知列表,当文件通知列表中的该文件可用时通知用户。如果该参数的值为 False 或省略该参数,则不请求任何通知,并且不能打开任何不可用的文件。

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2015-2-12 22:12:52 | 显示全部楼层
Set acadApp = GetObject(, "AutoCAD.Application")
If acadApp Is Nothing Then
    MsgBox "请打开AutoCAD。"
        Else
    path1 = ActiveWorkbook.Path
    filenames = path1 & "\" & ActiveWorkbook.Name & "X"
    If filenames <> False Then
       .
        .            
        .                    
        .            
            If N = True Then
                acadApp.Visible = True
                acadApp.ActiveDocument.SendCommand "EXCEL_JXT" & vbCr
CAD窗口并没有显示在前面,还有打开多个CAD时,EXCEL_JXT命令就不一定发送到CAD哪个窗口中了,如何解决?

点评

你这是在外部打开 Acad ,不要打开多个 Acad 线程,有一个 AcadApplication 后获取 Docuemnts,在 Documents 用 Open 方法打开 Dwg ,这个和 Excel.Application -> WorkBooks -> Open 类似的  详情 回复 发表于 2015-2-12 22:24
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2015-2-12 22:24:39 | 显示全部楼层
挚友01 发表于 2015-2-12 22:12
Set acadApp = GetObject(, "AutoCAD.Application")
If acadApp Is Nothing Then
    MsgBox "请打开Auto ...

你这是在外部打开 Acad ,不要打开多个 Acad 线程,有一个 AcadApplication 后获取 Docuemnts,在 Documents 用 Open 方法打开 Dwg ,这个和  Excel.Application  -> WorkBooks -> Open 类似的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 09:14 , Processed in 0.426646 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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