如何使用win32com.client通过python将XLA添加到excel中?

时间:2019-01-07 09:47:29

标签: python excel vba python-2.7 pywin32

我必须在excel文件中运行宏,这可以通过python win32完成。但是我需要运行宏需要第三方excel加载项。通过win32打开的Excel没有链接的加载项。加载项为XLA文件格式。

这是我的代码

new_file_path = path to excel_file.xlsm
xl = win32com.client.Dispatch('Excel.Application')
xl.Visible = True
refprop_path = path to XLA file
xl.Workbooks.Open(refprop_path)
xl.AddIns.Add(refprop_path)

xl.Workbooks.Open(new_file_path)
xl.Application.Run("iter1.xlsm!Sheet1.copy_data")
for i in range(0, 3):
    xl.Application.Run("iter1.xlsm!Sheet1.temp_const_gauge")
    xl.Application.Run("iter1.xlsm!Sheet1.copy_data")
xl.Application.Save()
xl.Application.Quit()

未添加该加载项,但出现错误。

xl.AddIns.Add(refprop_path).Installed = True
  File "<COMObject <unknown>>", line 3, in Add
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, u'Microsoft Excel', u'Add method of AddIns class failed', u'xlmain11.chm', 0, -2146827284), None)

1 个答案:

答案 0 :(得分:0)

我不必显式地编写一行来添加添加项。我删除了该行,问题就解决了。

工作代码:

new_file_path = path to excel_file.xlsm
xl = win32com.client.Dispatch('Excel.Application')
xl.Visible = True
refprop_path = path to XLA file
xl.Workbooks.Open(refprop_path)

xl.Workbooks.Open(new_file_path)
xl.Application.Run("iter1.xlsm!Sheet1.copy_data")
for i in range(0, 3):
    xl.Application.Run("iter1.xlsm!Sheet1.temp_const_gauge")
    xl.Application.Run("iter1.xlsm!Sheet1.copy_data")
xl.Application.Save()
xl.Application.Quit()

我似乎可以仅通过在后台打开XLA文件来使用该加载项。