明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3496|回复: 2

[提问] 请教lisp如何调用excel的sort函数

[复制链接]
发表于 2013-12-16 20:11:35 | 显示全部楼层 |阅读模式
;首先是用vlxls的函数导入了msxl开头的excel库函数
;要先下载个vlxls.lsp
(vlxls-app-init)
;然后获得xlapp
(setq *xlapp* (vlax-get-or-create-object "Excel.Application"))


下一步想用excel里的排序函数
在vba里是这样的:
With Excel.Worksheets("辅助1")
.Range("B3:K" & 3 + 4 - 1).Sort Key1:=Excel.Worksheets("辅助1").Range("F3"), Order1:=xlDescending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
        :=xlPinYin, DataOption1:=xlSortNormal

应该如何翻译成lisp呢?
(vlax-invoke-method
(msxl-get-range *xlapp* "B3:Z6")
'Sort
(msxl-get-range *xlapp* "F3")
msxl-xlDescending
msxl-xlGuess
1
:vlax-False
msxl-xlTopToBottom
msxl-xlPinYin
msxl-xlSortNormal
)
我这样写运行到第一个参数(msxl-get-range *xlapp* "F3")时提示实参太少。。
希望高手指点~~

发表于 2013-12-16 20:55:05 | 显示全部楼层
*xlapp*即application,到range应该还有很多步:application->Worksheets->worksheet->Range
 楼主| 发表于 2013-12-16 22:41:32 | 显示全部楼层
liu_kunlun 发表于 2013-12-16 20:55
*xlapp*即application,到range应该还有很多步:application->Worksheets->worksheet->Range

嗯嗯。。确实是,在vba里第一个参数也是要详细列出Excel.Worksheets("辅助1").Range("F3")的
可惜不知道这个msxl-get-range函数还能有什么参数可以添加了

哎,vla没学好
暂时用了个比较折衷的方法,将sort函数写在excel里,然后用(vlax-invoke *xlapp* 'run "sort函数" arg1 arg2)去调用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-25 22:34 , Processed in 0.197452 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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