本帖最后由 作者 于 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)处有问题 已经解决,谢谢。 |