Excel VBA的Shell调用冻结-涉及MacScript和Python(Excel for Mac 2011)

费利克斯·祖姆斯坦(Felix Zumstein)

此宏可以在Mac上的Excel 2011上正常运行:

Sub Works()
    scriptToRun = "do shell script ""/anaconda/bin/python -c "" & quoted form of ""import test_file"" "
    res = MacScript(scriptToRun)
    Debug.Print res
End Sub

相应的test_file.py文件(将其放置在pythonpath上的某个位置)是:

import sys
print(sys.version)

但是,当我涉及appscriptPython程序包时,它冻结了很长时间,并且什么也不做。test_file.py文件更改为此(pip install appscript第一个):

import appscript
app = appscript.app('Microsoft Excel')
app.cells['A1'].value.set(2)

但是,当我直接从AppleScript编辑器运行命令时,此方法有效:

do shell script "/anaconda/bin/python -c " & quoted form of "import test_file"

如何在Mac上从Excel VBA调用此方法?(通过Windows的方式,它可以轻松地与WScript.Shell配合使用pywin32

费利克斯·祖姆斯坦(Felix Zumstein)

解决方案是使用system()/popen()来自此答案调用,并在命令末尾以&符的形式运行该命令作为后台进程:

Private Declare Function system Lib "libc.dylib" (ByVal command As String) As Long

Sub RunTest()
    Dim result As String
    result = system("/anaconda/bin/python -c 'import test_file' &")
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

VBA:通过Mac版Excel 2011中的Outlook发送邮件

Excel的简单VBA宏执行缓慢(Mac 2011)

Excel 2011 Mac VBA打开文件-错误75

VBA - Mac Excel 2011 的 SendKeys“Enter”替代方案

Excel 2011 Mac自动恢复文件丢失

Mac版Excel 2011的DATEVALUE功能

在Mac上的Excel 2011的VBA中,“ = R [-115] C”是什么意思?

从Mac OS X Excel 2011 VBA传递变量到C ++

修改串联公式以添加其他列(Mac Excel 2011)

缺少按位运算?(适用于Mac 2011的Excel)

优雅的方式来处理Excel 2011 for Mac中的查找错误

函数参数定界符-Mac OS X的Excel 2011

将数值结果转换为Excel for Mac 2011中的字母

使用INDEX和MATCH,IF和AND返回单元格Excel 2011 Mac的列标题

与列标题串联,但在Mac 2011中使用Excel忽略空格

如何更改Mac excel 2011以使用逗号而不是分号分隔?

如何在Mac的Excel 2011中禁用向下移动Enter键?

在Mac上的Excel 2011中,如何使用vlookup返回非空白的匹配值?

匹配两列,并在相应的列中携带值-Microsoft Excel for Mac 2011 v。14.4.1

如何在Excel for Mac(2011)中通过键盘插入一行

向下填充公式,而无需在Mac 2011的Excel中拖动

Excel 2011 countif日期范围

如何在Excel Mac 2011中将快捷方式设置为“自定义键盘...”

Excel 2011条件格式错误

VBA application.run, MAC excel 2016

Mac上的VBA Excel Mac词典类Get Keys()属性

2011年Mac的发展

Excel 2010 VBA宏制作Excel冻结

使用最新的SDK和OS X的Mac Mini 2011