请检查lisp读取excel单元格的问题 20

(defunc:test()(vl-load-com)(openxls))(defunOpenxls(/appsession)(setqf1(getfiled"选择xls... (defun c:test()
(vl-load-com)
(openxls )
)

(defun Openxls ( / appsession)
(setq f1 (getfiled "选择xls文件" "D:/" "xls" 8))
(setq fn (findfile f1))
(setq appsession (vlax-get-or-create-object "Excel.Application"))
(vlax-invoke-method (vlax-get-property appsession 'WorkBooks) 'Open fn)
(DSX-Excel-Get-CellValue 3 3)

)

;;; 在活动的工作表中的单个单元格中获取数据
;;; 获取行<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 appsession) row col)
)
)
)
告诉我msxl-get-activesheet未定义,我也是刚刚学习调用excel,请大神帮忙。。。
展开
 我来答
dnbc1
2014-07-04 · TA获得超过978个赞
知道小有建树答主
回答量:1235
采纳率:92%
帮助的人:418万
展开全部
;应该是缺少Excel类型库的引入函数vlxs-app-int,程序改为:
(defun c:test()
(vl-load-com)
(vlxls-app-Init)
(openxls )
)
.....

(Defun vlxls-app-Init
(/ OSVar GGG Olb8 Olb9 Olb10 TLB Out msg msg1 msg2)
(if *Chinese*
(setq msg "\n 初始化微软Excel "
msg1 "\042初始化Excel错误\042"
msg2 (strcat
"\042 警告"
"\n ===="
"\n 无法在您的计算机上检测到微软Excel软件"
"\n 如果您确认已经安装Excel, 请发送电子邮"
"\n 件到yota@ikozmos.com获取更多的解决方案\042"
)
)
(setq msg "\n Initializing Microsoft Excel "
msg1 "\042Initialization Error\042"
msg2 (strcat
"\042 WARNING"
"\n ======="
"\n Can NOT detect Excel97/200X/XP in your computer"
"\n If you already have Excel installed, please email"
"\n us to get more solution via yota@ikozmos.com\042"
)
)
)
(if (null msxl-xl24HourClock)
(progn
(if (and (setq GGG
(vl-registry-read
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Excel.EXE"
"Path"
)
)
(setq GGG (strcase (strcat GGG "Excel.EXE")))
)
(progn
(foreach OSVar (list "SYSTEMROOT" "WINDIR"
"WINBOOTDIR" "SYSTEMDRIVE"
"USERNAME" "COMPUTERNAME"
"HOMEDRIVE" "HOMEPATH"
"PROGRAMFILES"
)
(if (vl-string-search (strcat "%" OSVar "%") GGG)
(setq GGG (vl-string-subst
(strcase (getenv OSVar))
(strcat "%" OSVar "%")
GGG
)
)
)
)
(setq Olb8 (findfile (vl-string-subst "EXCEL8.OLB" "EXCEL.EXE" GGG)
)
Olb9 (findfile (vl-string-subst "EXCEL9.OLB" "EXCEL.EXE" GGG)
)
Olb10 (findfile
(vl-string-subst "EXCEL10.OLB" "EXCEL.EXE" GGG)
)
)
(cond ((= (vl-filename-base (vl-filename-directory GGG))
"OFFICE11"
)
(setq TLB GGG
Out "2003"
)
)
((= (vl-filename-base (vl-filename-directory GGG))
"OFFICE10"
)
(setq TLB GGG
Out "XP"
)
)

(Olb9
(setq TLB Olb9
Out "2000"
)
)
(Olb8
(setq TLB Olb8
Out "97"
)
)
(t (setq Out "Version Unknown"))
)
(if TLB
(progn
(princ (strcat MSG Out "..."))
(vlax-import-type-library
:tlb-filename TLB :methods-prefix
"msxl-" :properties-prefix
"msxl-" :constants-prefix "msxl-"
)
)
)
)
(progn
(vldcl-msgbox "x" msg1 msg2)
(exit)
)
)
)
)
msxl-xl24HourClock
)
b94338240
2014-07-04 · 超过49用户采纳过TA的回答
知道小有建树答主
回答量:151
采纳率:100%
帮助的人:103万
展开全部
lisp本来就很冷门也很高端,知道里居然有这类奇货...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黔含品2
2017-02-10 · TA获得超过3.8万个赞
知道小有建树答主
回答量:2.7万
采纳率:45%
帮助的人:1487万
展开全部
(setq mgcell (vlax-get-property xlscells "range" "L9:L10")
(vlax-invoke-method mgcell "merge")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式