将外部脚本的结果返回给VBA

时间:2013-06-11 19:17:58

标签: python macos vba ms-word

我正在努力将我们在MS Word for Windows中工作的宏移植到OSX。宏允许用户使用Word中的LaTeX生成方程式,并且必须向服务器发出POST请求并返回结果。这在Windows中使用Microsoft.XMLHTTP对象可以正常工作,但在OSX中似乎没有等效的。

为了解决这个问题,我创建了一个使用urlliburllib2来处理请求的Python脚本,并允许我使用{{1}将我的LaTeX字符串和Web地址作为输入参数发送}}。此脚本执行我需要的操作,并将Web查询的结果作为字符串返回。

我在VBA中需要这个字符串。

我当前的VBA呼叫类似于以下内容,其中argparsepyPath是静态的,getURLpathLatex_Str是由用户输入生成的,{{1} }是运行我们的服务器端脚本的服务器的地址。

Font_Size

问题是WebAdd命令只返回您正在调用的进程的双值PID。我需要从我的Python脚本返回的实际字符串。我可以修改Python脚本以返回我想要的但是如何将其输入VBA?

有人知道如何将此结果导入我的VBA环境吗?

1 个答案:

答案 0 :(得分:2)

从问题中提取答案:

我开始工作了!
我能够使用result = MacScript(command)函数调用我的Python脚本,我将command定义为:{/ p>

command = "do shell script """ & pyPath & "python " & getURLpath & "getURL.py --formula '" _
          & Latex_Str & "' --fontsize " & Font_Size & " " & WebAdd & """"

我的Python脚本名为getURL.py,并根据用户定义的可选参数--formula--fontsize处理对服务器的请求,并以{{1}的形式存储在VBA中}和Latex_Str分别和服务器Font_Size的网址。我还在Python脚本中添加了一些功能来处理传递代理设置。传递WebAdd的上述命令返回Python脚本的stdout,它是服务器的返回。 Python脚本如下:

MacScript

如果有人好奇,一旦我修复了一些额外的错误并对其进行测试,完整的代码将在project page上提供。 (工作)Windows版本已经存在。