在for循环中为多个工作簿运行宏

时间:2019-05-16 19:32:28

标签: python xlwings

因此,我现在有三个文件,一个是带有评估程序的模板文件(用于执行计算),另一个是带有复制到评估程序的数据的两个文件。

我写了一个代码,循环遍历文件,将它们分配给工作簿,将数据从工作簿复制到评估器,运行宏以执行计算,然后将输出列复制回工作簿/保存/关闭。

如果我自己运行它(例如不在循环中),它会很好地工作,但是当我尝试在循环中运行它时,会给我一个com_error。

下面是代码。

app=xw.apps.add()
rater=app.books.open(path)
#macros to run
clear_all=rater.macro('clear_batch')
batch_rater=rater.macro('batch_rater')

for file_name in filenames:

    os.chdir(input_path)
    wb=xw.Book(file_name)    

    comp_data=wb.sheets("Data for Rater").range("copy_range").value
    rater.sheets("Batch Rater").range("b23").value=comp_data



    batch_rater()


    comp_premium=rater.sheets("Batch Rater").range("premium_copy_py").value
    #wb.sheets("Batch Rater").range("AQ23").options(transpose=True).value=test
    if file_name=="cien_cova_roofage_rooftype.xlsx":
        wb.sheets("All Company Premium").range("AQ67202").options(transpose=True).value=comp_premium
    elif file_name=='cien_cova_yearbuilt.xlsx':
        wb.sheets("All Company Premium").range("AQ12002").options(transpose=True).value=comp_premium


    clear_all()


    os.chdir(output_path)
    wb.save(str(file_name[:-4])+'_batch_output.xlsx')
    wb.close()

感谢任何输入/建议

0 个答案:

没有答案