我必须在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)
答案 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文件来使用该加载项。