乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 105|回复: 8

[VBA]怎样从VBA中传递值到Lisp变量?

[复制链接]

6

主题

28

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2004-8-17 11:16:00 | 显示全部楼层 |阅读模式
我的程序一部分由VBA写成,后一部分要由Lisp来处理,但是必须要从VBA中传递值到Lisp变量中,请高手帮忙怎么从VBA中传递参数到Lisp 中?
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-8-17 13:19:00 | 显示全部楼层
以前的贴子里都有,搜索一下。。。
回复

使用道具 举报

6

主题

28

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2004-8-17 13:43:00 | 显示全部楼层
我没搜索到啊,你能帮帮忙吗?
我要做的是把数组fn(0 to 4)的值传到一个表uu中,数组的每个元素作为新表的一项,新的表为(fn(0) fn(1) fn(2) fn(3) fn(4))
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-8-17 13:48:00 | 显示全部楼层
thisdrawing.SendCommand "(setq uu (list " & fn(0) & " " & fn(1) & " " & fn(2) & " " & fn(3) & " " & fn(4)        & "))"
回复

使用道具 举报

6

主题

28

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2004-8-17 14:44:00 | 显示全部楼层
lzh741206,谢谢你前面的帮助.再麻烦你一下,我传递的参数是字符串型的,但是VBA中字符串不能有双引号,有什么办法可以解决? 在数组fn()中,fn(0)存的是路径,例如fn(0)="c:\",fn(0)和fn(1)等数组元素存的是文件名,例如fn(1)="C:\ 81.XYZ"和fn(2)="82.XYZ",fn(3)="0721.XYZ" ,fn(4)="0722.XYZ"........,代码如下::
Private Sub UserForm_Initialize()
                         dlgOpen.Filter = "xyz文件|*.xyz"
                         dlgOpen.Flags = 512 'Allow MultiSelect
                         dlgOpen.ShowOpen
                         Dim fn() As String, cmd As String
                         If dlgOpen.FileName  "" Then
                                                         fn = Split(dlgOpen.FileName, " ")
                                                         cmd = "(setq uu (list " & fn(0)
                                                         For i = 1 To UBound(fn)
                                                                                         cmd = cmd & " " & fn(i)
                                                         Next i
                                                         cmd = cmd & "))"
                                                         ThisDrawing.Application.ActiveDocument.SendCommand cmd & vbCr
                         End If
                         End
End Sub
结果:::setq uu (list C:\ 81.XYZ 82.XYZ 0721.XYZ 0722.XYZ))
(nil nil nil nil nil)
怎么办?
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-8-17 14:53:00 | 显示全部楼层
字符串在VB和Lisp的传递最好用Users1~5系统变量
VBA里调用SetVariable方法设置系统变量的值
Lisp里用GetVar函数读取
你的变量正好有5个,超过的话就要用字符连接和分解了
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-8-17 14:59:00 | 显示全部楼层
另外,有两点:
一、VB里字符串可以有分号,如
MsgBox         "A""B"
二、VB里"\"在Lisp里是"\\"
回复

使用道具 举报

6

主题

28

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2004-8-17 15:40:00 | 显示全部楼层
其实我的参数不一定是四个.很有可能要超过4个.我以前做的一个程序是Lisp 做的,Lisp 中函数Gerfiled只能选一个文件,不能多选,我现在就是要在VBA中用CommanDialog选择多个文件,然后把文件名传给Lisp,哎,好象挺难办到的.
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-8-17 15:49:00 | 显示全部楼层
VBA里 SetVariable "Users1" , dlgOpen.FileName
Lisp里
(setq a (GetVar "Users1"))
再编个函数把字符串分解为表
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-1 04:03 , Processed in 0.520652 second(s), 71 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表