lxdz443 发表于 2021-11-23 05:33:40

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

现在最高只支持到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

照猫画虎添加进去啊

lxl217114 发表于 2021-11-23 09:38:47

昨天刚刚遇到这个问题,没想应有帖子反馈了。

lxdz443 发表于 2021-11-23 19:43:33

安装offcie2016完整版的只需要添加
((= (vl-filename-base (vl-filename-directory GGG))
                  "OFFICE16"
               )
               (setq TLB GGG
                     Out "2016"
               )
                )
就可以了,绿色版或者精简版的不行。

lxl217114 发表于 2021-11-24 09:38:18

lxdz443 发表于 2021-11-23 19:43
安装offcie2016完整版的只需要添加
((= (vl-filename-base (vl-filename-directory GGG))
               ...

原来如此,我昨天照着“烟盒迷唇”大佬说的照猫画虎的方法,如法炮制,但是不行。
页: [1]
查看完整版本: G版的这个检测Excel函数如何修改可以支持ecxel2016版本?