明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1428|回复: 4

[提问] 以下几个自定义函数,可以正常操作OFFICE的软件,不能操作WPS的表格,提示实参数少

[复制链接]
发表于 2021-12-13 14:19:03 | 显示全部楼层 |阅读模式

以下几个自定义函数,可以正常操作OFFICE的软件,不能操作WPS的表格,提示实参数少,请大神们指点一下,谢谢


  1. ;;;(setq XLSFile "C:\\Users\\Administrator\\Desktop\\测试.xls")
  2. ;;;(setq UnHide t)
  3. ;;;(xlr_open_xls XLSFile t )
  4. ;;;(xlr_open_xls  表格路径  是否显示)打开表格
  5. (Defun xlr_open_xls( XLSFile UnHide / ExcelApp WorkSheet Sheets ActiveSheet Rtn)
  6.   (if (and (findfile XLSFile) (setq Rtn (vlax-get-or-create-object "Excel.Application")))
  7.     (progn (vlax-invoke-method (vlax-get-property Rtn 'WorkBooks) 'Open XLSFile)
  8.     (if UnHide
  9.       (vla-put-visible Rtn 1)
  10.       (vla-put-visible Rtn 0)
  11.     )
  12.     )
  13.   )
  14.   Rtn
  15. )

  16. ;;;(setq XLSFile "C:\\Users\\Administrator\\Desktop\\测试2313.xls")
  17. ;;;(xlr_excel_kill xlapp  nil)
  18. ;;;(xlr_excel_saveas  xlapp XLSFile)

  19. ;;;(xlr_excel_kill xlapp "C:\\Users\\Administrator\\Desktop\\测试2313.xls")
  20. ;;;________________________________________________________________________
  21. (Defun xlr_excel_kill (ExlObj SaveYN);;;excel退出与保存
  22.    (if SaveYN
  23.     (progn
  24.       (vlax-invoke-method (vlax-get-property ExlObj "ActiveWorkbook") 'SAVE)
  25.       (vlax-invoke-method (vlax-get-property ExlObj "ActiveWorkbook") 'Close :vlax-False)
  26.       )
  27.     (vlax-invoke-method (vlax-get-property ExlObj "ActiveWorkbook") 'Close :vlax-False)
  28.   )
  29.   (vlax-invoke-method ExlObj 'QUIT)
  30.   (vlax-release-object ExlObj)
  31.   (setq ExlObj nil)
  32.   (gc)
  33. )


  34. ;;;另存文件
  35. (Defun xlr_excel_saveas (xlapp Filename / Rtn)
  36.   (if (findfile Filename)
  37.     (vl-file-delete (findfile Filename))
  38.   )
  39.   (vlax-invoke-method
  40.     (vlax-get-property Xlapp "ActiveWorkbook")
  41.     "SaveAs"
  42.     Filename
  43.     msxl-xlNormal
  44.     ""
  45.     ""
  46.     :vlax-False
  47.     :vlax-False
  48.     nil
  49.   )
  50.   (findfile Filename)
  51. )

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-12-14 10:49:27 | 显示全部楼层
(if (and (findfile XLSFile) (setq Rtn (vlax-get-or-create-object "Excel.Application")))
→→→→→
(if (and (findfile XLSFile) (setq Rtn (vlax-create-object "Excel.Application")))
 楼主| 发表于 2021-12-14 13:06:56 | 显示全部楼层
ㄘ丶转裑ㄧ灬 发表于 2021-12-14 10:49
(if (and (findfile XLSFile) (setq Rtn (vlax-get-or-create-object "Excel.Application")))
→→→→→
...

谢谢
发表于 2022-7-20 13:00:43 | 显示全部楼层

所以解决了吗?把函数:vlax-get-or-create-object改成vlax-create-object。也不行啊
发表于 2022-7-20 13:17:33 | 显示全部楼层
vlax-invoke-method 改为  vlax-invoke

(setq Rtn (vlax-get-or-create-object "Excel.Application"))改为
(setq rtn (cond ((vlax-get-or-create-object "ket.application"))
                      ((vlax-get-or-create-object "execl.application"))
                )
      )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-15 10:45 , Processed in 0.164409 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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