【问题标题】:How do I save Excel Workbook after running macro with Python?使用 Python 运行宏后如何保存 Excel 工作簿?
【发布时间】:2018-11-10 09:12:17
【问题描述】:

python 的代码可以工作,但一旦运行,我仍然会从 excel 中得到一个框,询问“想要保存对工作簿的更改”我的代码中似乎缺少的是添加一些将保存工作簿的内容最后。我在工作簿中使用 RTD 函数,这可能是弹出窗口的原因。

这是我使用的python代码。

from __future__ import print_function
import unittest
import os.path
import win32com.client

class ExcelMacro(unittest.TestCase):
    def test_excel_macro(self):
        try:
            xlApp = win32com.client.DispatchEx('Excel.Application')
            xlsPath = os.path.expanduser('C:\Magic Samsung\Watch Samsung\Workbook.xlsm')
            wb = xlApp.Workbooks.Open(Filename=xlsPath)
            xlApp.Run('ArchiveMaster')
            wb.Save()
            xlApp.Quit()
            print("Macro ran successfully!")
        except:
            print("Error found while running the excel macro!")
            xlApp.Quit()
            if __name__ == "__main__":
            unittest.main()

【问题讨论】:

  • 您是否尝试将其保存为启用宏的 ..with .xlsm 扩展名
  • 是的,我已将其保存为启用宏。
  • 下面的代码正在工作@Try?

标签: python excel


【解决方案1】:

根据LinkxlOpenXMLWorkbookMacroEnabled 是 52。所以,在保存时只需给出参数 FileFormat = 52,如下面的代码所示

class ExcelMacro(unittest.TestCase):
    def test_excel_macro(self):
        try:
            xlApp = win32com.client.DispatchEx('Excel.Application')
            xlapp.DisplayAlerts=False
            xlsPath = os.path.expanduser('C:\Magic Samsung\Watch Samsung\Workbook.xlsm')
            wb = xlApp.Workbooks.Open(Filename=xlsPath)
            xlApp.Run('ArchiveMaster')
            wb.SaveAs(Filename=path_here, FileFormat=52)
            xlApp.Quit()
            print("Macro ran successfully!")
        except:
            print("Error found while running the excel macro!")
            xlApp.Quit()
            if __name__ == "__main__":
            unittest.main()

注意:使用 saveAs 时会出现一个弹出窗口。这个SO questionThis So Post 的答案就是这个问题

【讨论】:

  • 它确实运行了,但最后我仍然得到了我只想保存的 excel 弹出窗口“想要保存对工作簿的更改”......
  • @Try,检查答案,我已经用解决方案更新了它,简而言之,做 wb.DisplayAlerts = False
  • 我将在代码中的什么位置添加 wb.DisplayAlerts = False?
  • 保存前尝试
  • 仍然收到 excel 弹出窗口“想要保存对工作簿的更改”:(
猜你喜欢
  • 2015-06-02
  • 2014-09-30
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
相关资源
最近更新 更多