这段读取excel的代码那里出错了?如何修改!多谢!
学习了一下大师langjs《沉降过程图绘制》中的读取excel,用了其中一部分,但是总是出问题!运行第一次的时候没有问题,但是再次运行的时候就不行了!调试的时候也没问题,可是到CAD里面运行的
时候就又不行了,折腾了很久,后来发现在任务管理器中把excel的进程结束后又可以运行了,我想应该是
程序后面没有结束excel的调用,导致文件处于打开状态,所以再第一次运行成功后,再次运行程序的时候
就无法打开文件了!
现在关键是不知道如何结束excel的调用!请大师们看看如何修改下面这段代码?多谢了!
(defun c:rex( )
(vl-load-com)
(setq oldfil "d:\\tmp.et")
(setq appsession (vlax-create-object "Excel.Application"))
(vlax-invoke-method (vlax-get-property appsession 'WorkBooks) 'open oldfil)
(vla-put-visible appsession 0)
(setq excelapp (vlax-get-object "Excel.Application"))
(setq wb (vlax-get-property excelapp 'activeworkbook)) ; excel工作簿对象
(setq sh (vlax-get-property wb 'activesheet)) ; excel工作表对象
(setq range0 (vlax-get-property sh 'range "A65536"))
(setq e (vlax-get-property (vlax-get-property range0 'end -4162) 'row))
(setq cells (vlax-get sh "cells"))
(setq i 2)
(while ( < i( 1+ e))
(setq str (rexcel cells i)) ; 读取第i行
(princ "\n")
(princ str)
(setq i (1+ i))
)
(cond
((not (vlax-object-released-p appsession))
(vlax-invoke-method appsession 'quit)
(vlax-release-object appsession)
)
)
)
;=========================
;读取excel行自定义函数
(defun rexcel (cells i / j zh z)
(setq zh nil
z nil
j 1
)
(while ( < j 9)
(setq z (vlax-variant-value (vlax-variant-change-type (vlax-get-property cells 'item i j) 8)))
(setq zh (append zh (list(list z))))
(setq j (1+ j))
)
zh
)
把(setq appsession (vlax-create-object "Excel.Application"))
改成
(setq appsession (vlax-get-or-create-object "Excel.Application")) kozmosovia 发表于 2016-2-26 14:24 static/image/common/back.gif
把(setq appsession (vlax-create-object "Excel.Application"))
改成
(setq appsession (vlax-get-or-cr ...
多谢多谢!成功了!!
页:
[1]