meworld 发表于 2004-8-17 11:16:00

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

我的程序一部分由VBA写成,后一部分要由Lisp来处理,但是必须要从VBA中传递值到Lisp变量中,请高手帮忙怎么从VBA中传递参数到Lisp 中?

雪山飞狐_lzh 发表于 2004-8-17 13:19:00

以前的贴子里都有,搜索一下。。。

meworld 发表于 2004-8-17 13:43:00

我没搜索到啊,你能帮帮忙吗?


我要做的是把数组fn(0 to 4)的值传到一个表uu中,数组的每个元素作为新表的一项,新的表为(fn(0) fn(1) fn(2) fn(3) fn(4))

雪山飞狐_lzh 发表于 2004-8-17 13:48:00

thisdrawing.SendCommand "(setq uu (list " & fn(0) & " " & fn(1) & " " & fn(2) & " " & fn(3) & " " & fn(4)        & "))"

meworld 发表于 2004-8-17 14:44:00

<A name=43549><FONT color=#990000><B>lzh741206</B></FONT></A>,谢谢你前面的帮助.再麻烦你一下,我传递的参数是字符串型的,但是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()<BR>                       dlgOpen.Filter = "xyz文件|*.xyz"<BR>                       dlgOpen.Flags = 512 'Allow MultiSelect<BR>                       dlgOpen.ShowOpen<BR>                       Dim fn() As String, cmd As String<BR>                       If dlgOpen.FileName &lt;&gt; "" Then<BR>                                                       fn = Split(dlgOpen.FileName, " ")<BR>                                                       cmd = "(setq uu (list " &amp; fn(0)<BR>                                                       For i = 1 To UBound(fn)<BR>                                                                                       cmd = cmd &amp; " " &amp; fn(i)<BR>                                                       Next i<BR>                                                       cmd = cmd &amp; "))"<BR>                                                       ThisDrawing.Application.ActiveDocument.SendCommand cmd &amp; vbCr<BR>                       End If<BR>                       End<BR>End Sub<BR>


结果::::(setq uu (list C:\ 81.XYZ 82.XYZ 0721.XYZ 0722.XYZ))<BR>(nil nil nil nil nil)


怎么办?

雪山飞狐_lzh 发表于 2004-8-17 14:53:00

字符串在VB和Lisp的传递最好用Users1~5系统变量


VBA里调用SetVariable方法设置系统变量的值


Lisp里用GetVar函数读取


你的变量正好有5个,超过的话就要用字符连接和分解了

雪山飞狐_lzh 发表于 2004-8-17 14:59:00

另外,有两点:


一、VB里字符串可以有分号,如





MsgBox       "A""B"


二、VB里"\"在Lisp里是"\\"

meworld 发表于 2004-8-17 15:40:00

其实我的参数不一定是四个.很有可能要超过4个.我以前做的一个程序是Lisp 做的,Lisp 中函数Gerfiled只能选一个文件,不能多选,我现在就是要在VBA中用CommanDialog选择多个文件,然后把文件名传给Lisp,哎,好象挺难办到的.

雪山飞狐_lzh 发表于 2004-8-17 15:49:00

VBA里



SetVariable "Users1" , dlgOpen.FileName


Lisp里


(setq a (GetVar "Users1"))


再编个函数把字符串分解为表
页: [1]
查看完整版本: [VBA]怎样从VBA中传递值到Lisp变量?