程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了openpyxl 正在覆盖由 Win32 宏在 Excel 中完成的任何工作大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决openpyxl 正在覆盖由 Win32 宏在 Excel 中完成的任何工作?

开发过程中遇到openpyxl 正在覆盖由 Win32 宏在 Excel 中完成的任何工作的问题如何解决?下面主要结合日常开发的经验,给出你关于openpyxl 正在覆盖由 Win32 宏在 Excel 中完成的任何工作的解决方法建议,希望对你解决openpyxl 正在覆盖由 Win32 宏在 Excel 中完成的任何工作有所启发或帮助;

我目前正在编写一个脚本,需要我更新 Excel 工作表中的数据并运行宏。运行宏后,我尝试使用 win32 保存文件,以便能够再次运行类似的过程。但是,我已将所有内容与 win32 和 openpyxl 的一个奇怪问题联系起来。似乎如果我使用 win32 运行宏,保存文件并打开它,一切看起来都应该如此。但是,如果我在运行宏后使用 openpyxl 向该文件添加内容,则宏的整个结果将被删除。例如,宏用正确的数据填充单元格 A4:H23,但是在使用 win32 保存并使用 openpyxl 重新打开和编辑之后,如果我之后尝试向单元格 A3 添加任何值并打开文件,唯一的事情是显示的是 A3 中的值,而宏不应该执行任何操作。我可以手动打开工作表并添加数字并重新保存它,但是当我使用 openpyxl 这样做时,它会清除所有宏结果。我在下面包含了我的代码以供参考。任何帮助将不胜感激。

from openpyxl import load_workbook
import os
import win32com.clIEnt
import re
import time

Macro1 = r"C:\Users\...\documents\Macro1Demo.xlsm"
Macro2 = r"C:\Users\...\documents\Macro2Demo.xlsm"
MIDdleManTest = r"C:\Users\...\documents\MIDdleManTest.xlsm"
MIDdleMan2 = r"C:\Users\...\documents\MIDdleMan2.xlsm"
diStrictList = r"C:\Users\...\documents\diStrictList.xLSX"

Macro1WB = load_workbook(filename = Macro1,keep_vba = TruE)
Macro2WB = load_workbook(filename = Macro2,keep_vba = TruE)
MM2WB = load_workbook(filename = MIDdleMan2,keep_vba = TruE)
ListWB = load_workbook(filename = diStrictList,keep_vba = TruE)

ListSheet = ListWB['Sheet1']
M1Sheet = Macro1WB['Entry']
M2Sheet = Macro2WB['Raw']

for i in range(2,3):
    Macro1WB['Entry']['A2'].value = ListWB['Sheet1']['A' + str(i)].value
    Macro1WB['Entry']['B2'].value = ListWB['Sheet1']['B' + str(i)].value
    Orgname = Macro1WB['Entry']['A2'].value
    diStrictname = Macro1WB['Entry']['B2'].value
    Macro1WB.save(Macro1)
    SimpLeorgname = re.sub('[/\:*?<>|"]','',OrgName)
    SimplediStrictname = re.sub('[/\:*?<>|"]',diStrictName)
    Newfilename = SimpLeorgname + "(" + SimplediStrictname + ")"
    print(Macro1WB['Entry']['A2'].value,Macro1WB['Entry']['B2'].value)
    print("Org/diStrict copIEd.")

    if os.path.exists(r"C:\Users\...\documents\Macro1Demo.xlsm"):
        xl = win32com.clIEnt.dispatch("Excel.application")
        xl.visible = True
        workbook = xl.Workbooks.Open(os.path.abspath(r"C:\Users\...\documents\Macro1Demo.xlsm"))
        xl.Application.Run("Macro1Demo.xlsm!Module1.AdvancedFilter")
        print("Data filtered.")
        workbook.SaveAs(MIDdleMan2)
        xl.Application.Quit()

        MM2WB['Entry']['A3'] = i
        MM2WB.save(MIDdleMan2)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的openpyxl 正在覆盖由 Win32 宏在 Excel 中完成的任何工作全部内容,希望文章能够帮你解决openpyxl 正在覆盖由 Win32 宏在 Excel 中完成的任何工作所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。