Como passar variaveis do VBA para o LISP

Sim nerd é possível!!! e sem aquele recurso de usar as variaveis de sistema!! navegando na net encontrei um esquema jóia!!!
Vamos lá então, veja o código VBA:

Function ReadLispVariable(varname As String) As Variant
Dim VL As Object
If VL Is Nothing Then
Set VL = CreateObject("VL.APPLICATION.16")
End If

With VL.ActiveDocument.Functions
Set SYM = .Item("read").funcall(varname)
ReadLispVariable = .Item("eval").funcall(SYM)
End With
End Function

Sub SetLispVariable(varname As String, value As Variant)
Dim VL As Object
Dim SYM As Object

If VL Is Nothing Then
Set VL = CreateObject("VL.APPLICATION.16")
End If

With VL.ActiveDocument.Functions
Set SYM = .Item("read").funcall(varname)
.Item("set").funcall SYM, value
End With
End Sub

'para testar, rode esta macro primeiro:
Sub setar()
SetLispVariable "nomevar", "Funciona!!"

End Sub

'depois rode esta:
Sub pegar()
MsgBox ReadLispVariable("nomevar")
End Sub


E por fim, experimente isto:
no console do visual lisp (ou na linha de comando do cad), faça:
(setq muitobom "que beleza!!!")

depois edite a macro "pegar" para ficar assim:

Sub pegar()
MsgBox ReadLispVariable("muitobom")
End Sub


E veja os resultados!!

Um comentário:

  1. Ah, esqueci de mencionar onde encontrei:
    http://augiru.augi.com/content/library/au07/data/paper/CP205-3.pdf

    ResponderExcluir