我有一个如下所示的VBA脚本,它执行一个将值写入Excel工作簿的python脚本。
Dim args
Dim Ret_Val
args = ActiveWorkbook.Path & "\helloWorld.py"
Ret_Val = Shell("C:\Python27\python.exe " & args, vbNormalFocus)
helloWorld.py如下:
import xlrd
from xlutils.copy import copy
rb = xlrd.open_workbook("/a/b/StubProto.xlsm")
wb = copy(rb)
ws1 = wb.get_sheet(0)
ws1.write(1, 11, "Hello World")
wb.save("StubProto.xlsm")
上述代码在Windows环境中可单独运行,但在VBA环境中无效。它似乎没有在VBA环境中返回任何内容。
我做错了吗?
答案 0 :(得分:0)
我有一个VBA脚本执行相同的操作,它的外观如下:
args = """" & Application.ActiveWorkbook.Path & "\helloWorld.py"" P"
output = ShellRun("""C:\Python27\python.exe"" " & args)
答案 1 :(得分:0)
问题在于args路径中的目录中间有空格。删除python脚本路径中的空格修复了错误。