我将VBA与Python结合使用。在
我导入了操作系统模块,并使用excel-openpyxl。当它迭代从Excel运行VBA宏的函数时,会出现问题。在
import random
from openpyxl import load_workbook
import os, os.path, win32com.client
wbi = load_workbook('Input.xlsm')
wsi = wbi.get_active_sheet()
wbo = load_workbook('Output.xlsx')
wso = wbo.get_active_sheet()
def run_macro(fName, macName, path=os.getcwd()):
"""
pre: fName is the name of a valid Excel file with macro macName
post: fName!macName is run, fName saved and closed
"""
fName = os.path.join(path, fName)
xlApp = win32com.client.Dispatch("Excel.Application")
fTest = xlApp.Workbooks.Open(fName)
macName = fTest.Name + '!' + macName
xlApp.Run(macName)
fTest.Close(1)
xlApp.Quit()
xlApp = None
def IBP():
ibp = wsi.cell('G12')
ibpv = random.randint(0,45)
ibp.value = ibpv
return ibp.value
def BP10():
bp10 = wsi.cell('G13')
bpv10 = random.randint(30,50)
bp10.value = bpv10
return bp10.value
for n in range(6):
IBP()
print IBP()
BP10()
run_macro('Input.xlsm','macro1')
wbo.save('Output.xlsx')
我认为错误在run_macro('Input.xlsm','macro1')
-它不能迭代。在
输出:
^{pr2}$我做错什么了?在
我不确定这是否有用,但你可以试试早期绑定。运行此脚本,然后重试您的脚本:
如果不起作用,您可以通过如下方式挂接到Excel来返回后期绑定:
^{pr2}$或者只删除这个文件夹:
C:\Python27\Lib\site-packages\win32com\gen_py\00020813-0000-0000-C000-000000000046x0x1x7
从错误消息来看,问题似乎在
wb = xlApp.Workbooks.Open(fname)
行。如果连接到excelcom服务器的Python钩子工作正常,那么这行代码不会引发异常。我看不出发生异常的代码有什么问题。有时在这种情况下,早期绑定会有所帮助。在祝你好运
迈克
相关问题 更多 >
编程相关推荐