大佬教程收集整理的这篇文章主要介绍了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,请注明来意。