明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2024|回复: 3

[讨论]帮我看看cad读取excel时出现的错误

[复制链接]
发表于 2009-9-21 15:39:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2009-9-21 23:55:00 编辑

(vl-load-com)
(defun c:xlstest()
  ;
  ;
  (DSX-TypeLib-Excel)
  (DSX-Load-TypeLib-Excel)
  (setq rng (DSX-Open-Excel-Exist "D:\\book1.xlsx" "show"))
  (DSX-Excel-Get-Cell rng 6 3)
  (setq value_wu (DSX-Excel-Get-CellValue 2 2))
  (print value_wu)
   

 

(defun DSX-TypeLib-Excel (/ sysdrv tlb)
  (setq sysdrv (getenv "systemdrive"))
  (cond
    ((setq
       tlb (findfile
      (strcat
        sysdrv
        "\\Program Files\\Microsoft Office\\Office\\Excel.exe"
      )
    )
     )
     tlb
    )
    ((setq tlb
     (findfile
       (strcat
  sysdrv
  "\\Program Files\\Microsoft Office\\Office10\\Excel.exe"
       )
     )
     )
     tlb
    )
    ((setq tlb
     (findfile
       (strcat
  sysdrv
  "\\Program Files\\Microsoft Office\\Office12\\Excel.exe"
       )
     )
     )
     tlb
    )
  )
)

(defun DSX-Load-TypeLib-Excel (/ tlbfile tlbver out)
  (cond
    ((null msxl-xl24HourClock)
     (if (setq tlbfile (DSX-TypeLib-Excel))
       (progn
  (setq tlbver (substr (vl-filename-base tlbfile) 6))
  (cond
    ((= tlbver "9")
     (princ "\n初始化 Microsoft Excel 2000...")
    )
    ((= tlbver "8")
     (princ "\n初始化 Microsoft Excel 97...")
    )
    ((= (vl-filename-base tlbfile) "Excel.exe")
     (princ "\n初始化 Microsoft Excel XP...")
    )
  )
  (vlax-import-type-library
    :tlb-filename     tlbfile        :methods-prefix
    "msxl-"      :properties-prefix  "msxl-"
    :constants-prefix "msxl-"
   )
  (if msxl-xl24HourClock
    (setq out T)
  )
       )
     )
    )
    (T (setq out T))
  )
  out
)

(defun DSX-Open-Excel-Exist (xfile dmode / appsession)
  (princ "\n打开 Excel 电子表格文件...")
  (cond
    ((setq fn (findfile xfile))
     (cond
       ((setq appsession
        (vlax-get-or-create-object "Excel.Application")
 )
 (vlax-invoke-method
   (vlax-get-property appsession 'WorkBooks)
   'Open
   fn
 )
 (if (= (strcase dmode) "SHOW")
   (vla-put-visible appsession 1)
   (vla-put-visible appsession 0)
 )
       )
     )
    )
    (T (alert (strcat "\n不能找到指定的文件: " xfile)))
  )
  appsession
)

;;; 获取行<relrow> 和列 <relcol>范围内的单元格对象

(defun DSX-Excel-Get-Cell (rng relrow relcol)
  (vlax-variant-value
    (msxl-get-item
      (msxl-get-cells rng)
      (vlax-make-variant relrow)
      (vlax-make-variant relcol)
    )
  )
)

;;; 返回单元格(row, col)内容的值

(defun DSX-Excel-Get-CellValue (row col)
  (vlax-variant-value
    (msxl-get-value
      (DSX-Excel-Get-Cell
 (msxl-get-ActiveSheet xlapp)
 row
 col
      )
    )
  )
)

执行结果:

打开 Excel 电子表格文件...; 错误: 参数类型错误: VLA-OBJECT nil

个人估计是在 (msxl-get-ActiveSheet xlapp)处有问题

已经解决,谢谢。

 楼主| 发表于 2009-9-22 00:04:00 | 显示全部楼层
已经解决了,谢谢
明经网友  发表于 2009-11-12 13:55:00
怎么解决的呢?可否指教一下
回复 支持 反对

使用道具

发表于 2010-6-29 10:38:00 | 显示全部楼层

怎么解决的呢?

请指教,谢谢

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

本版积分规则

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

GMT+8, 2024-10-2 06:39 , Processed in 0.164156 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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