小弟修改了网上下载的源文件;用LISP将列表输出到EXCEL中,可是运行不通过,请高手指点一下!谢谢 文件如下: ;加载EXCEL2003类型库 (vl-load-com) (defun DSX-TypeLib-Excel ( / sysdrv tlb) (setq sysdrv (getenv "systemdrive")) (cond ( (setq tlb (findfile (strcat sysdrv "\\Program Files\\Microsoft Office\\Office11\\Excel.exe"))) tlb ) ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;定义EXCEL2003类型库接口 (defun DSX-Load-TypeLib-Excel ( / tlbfile tlbver out) (cond ( (null msxl-xl24HourClock) (if (setq tlbfile (DSX-TypeLib-Excel)) (progn (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 ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; 注意: <dmode> 可以设为 "SHOW" (显示)或 "HIDE" (隐藏),它取决于你希望 ;;; Excel 进程是否可以让用户直接操作访问。 (defun DSX-Open-Excel-New (dmode / appsession) (princ "\n创建一个新的 Excel 电子表格文件...") (cond ( (setq appsession (vlax-create-object "Excel.Application")) (vlax-invoke-method (vlax-get-property appsession 'WorkBooks) 'Add) (if (= (strcase dmode) "SHOW") (vla-put-visible appsession 1) (vla-put-visible appsession 0) ) ) ) appsession ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;主程序:取出指定的EXCEL文件中指定范围内的数据 (defun C:putexcel ( / xlapp xlfile ready tlbfile ash range xlist) (DSX-Load-TypeLib-Excel) (setq xlapp (DSX-Open-Excel-new "SHOW")) (setq range (msxl-Get-ActiveSheet xlapp)) (setq r range) (setq range1 (msxl-Get-ActiveCell xlapp)) (DSX-Excel-Put-RowList '(1 2) 1 1 range1)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;************************************************************************* ;;; 模块: DSX-Excel-Put-RowList ;;; 描述: 将列表写到工作表指定行(startrow) 中的指定起始列(startcol) ;;; 参数: list, startrow, startcol ;;; 示例: (DSX-Excel-Put-RowList '("A" "B" "C") 1 2) 将数据分别输出到单元格(1,B) (1,C) (1,D)中 ;;;*************************************************************************
(defun DSX-Excel-Put-RowList (lst startrow startcol range) (foreach itm lst (msxl-put-value (vlax-variant-value (msxl-get-item (msxl-get-cells range) (vlax-make-variant startrow) (vlax-make-variant startcol) ) ) itm ) (setq startcol (1+ startcol)) ); repeat )
|