明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 663|回复: 4

[提问] G版的这个检测Excel函数如何修改可以支持ecxel2016版本?

[复制链接]
发表于 2021-11-23 05:33:40 | 显示全部楼层 |阅读模式
现在最高只支持到excel2013版本,无法识别excel2016版本。

(Defun vlxls-app-Init
       (/ OSVar GGG Olb8 Olb9 Olb10 TLB Out msg msg1 msg2)
  (if *Chinese*
    (setq msg  "\n 初始化微软Excel "
          msg1 "\042初始化Excel错误\042"
          msg2 (strcat
                 "\042 警告"
                 "\n ===="
                 "\n 无法在您的计算机上检测到微软Excel软件"
                 "\n 如果您确认已经安装Excel, 请发送电子邮"
                 "\n 件到kozmosovia@hotmail.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 GuXiaolin@hxch.com.cn\042")
          )
    )
  (if (null msxlc-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))
                    "OFFICE15"
                 )
                 (setq TLB GGG
                       Out "2013"
                 )
                )
            ((= (vl-filename-base (vl-filename-directory GGG))
                    "OFFICE14"
                 )
                 (setq TLB GGG
                       Out "2010"
                 )
                )
            ((= (vl-filename-base (vl-filename-directory GGG))
                    "OFFICE12"
                 )
                 (setq TLB GGG
                       Out "2007"
                 )
                )
            ((=        (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 TLB GGG Out "Version Unknown"))
            )
          (if TLB
            (progn
              (princ (strcat MSG Out "..."))
              (vlax-import-type-library
                :tlb-filename           TLB
                :methods-prefix           "msxl-"
                :properties-prefix "msxlp-"
                :constants-prefix  "msxlc-")
              )
            )
          )
        (progn
          ;|(if vldcl-msgbox
            (vldcl-msgbox "x" msg1 msg2)
            (alert (read msg2))
            )|;
          (alert msg2)
          (exit)
          )
        )
      )
    )
  msxlc-xl24HourClock
  )

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-11-23 08:54:58 | 显示全部楼层
照猫画虎添加进去啊
发表于 2021-11-23 09:38:47 | 显示全部楼层
昨天刚刚遇到这个问题,没想应有帖子反馈了。
 楼主| 发表于 2021-11-23 19:43:33 | 显示全部楼层
安装offcie2016完整版的只需要添加
((= (vl-filename-base (vl-filename-directory GGG))
                    "OFFICE16"
                 )
                 (setq TLB GGG
                       Out "2016"
                 )
                )
就可以了,绿色版或者精简版的不行。
发表于 2021-11-24 09:38:18 | 显示全部楼层
lxdz443 发表于 2021-11-23 19:43
安装offcie2016完整版的只需要添加
((= (vl-filename-base (vl-filename-directory GGG))
               ...

原来如此,我昨天照着“烟盒迷唇”大佬说的照猫画虎的方法,如法炮制,但是不行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-15 07:39 , Processed in 0.202565 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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