我正在使用 Knime 生成 Excel,然后使用 python 对文件进行一些调整。 我从 Knime 的输出中获取数据,并将它们粘贴到预先格式化的 Template.xlsm 中,该模板有几个数据透视表,在粘贴新数据后要刷新。一切都正常,直到最后一步,当我需要刷新枢轴时。
我尝试过不同的解决方案:
import win32com.client
xl = win32com.client.DispatchEx("Excel.Application")
wb = xl.workbooks.open("path\file.xlsm")
xl.Visible = True
wb.RefreshAll()
xl.Quit()
import xlwings as xw
xl=win32com.client.Dispatch("Excel.Application")
xl.Workbooks.Open(os.path.abspath("excelsheet.xlsm"), ReadOnly=1)
xl.Application.Run("excelsheet.xlsm!modulename.macroname")
xl.Application.Save() the
xl.Application.Quit()
我认为这与以下事实有关:在我的组织中,我们在所有文件中都有强制性的敏感级别标签。然而,我发现奇怪的是,虽然我仍在使用脚本处理它(我的意思是在保存它并因此生成最终文件.xlsm之前),但我无法运行宏。
wb = xw.Book('file.xlsm')
labelinfo = wb.api.SensitivityLabel.CreateLabelInfo()
labelinfo.AssignmentMethod = 2
labelinfo.Justification = 'init'
labelinfo.LabelId = 'YOUR-ID-GOES-HERE'
wb.api.SensitivityLabel.SetLabel(labelinfo, labelinfo)
您有什么建议或方法来最终绕过敏感度标签吗?
测试前请使用 Windows 任务管理器关闭所有 Excel 实例。需要
workbook.Close
来保存更改。
# Env: pywin32 v305, Python 3.11, Excel 365
import win32com.client
xl = win32com.client.DispatchEx("Excel.Application")
xl_file = r"d:/temp/py.xlsm"
wb = xl.workbooks.open(xl_file)
xl.Visible = True
wb.RefreshAll()
wb.Close(SaveChanges=1)
xl.Quit()