我之所以写作,是因为在似乎搜索了一半的互联网之后,我无法弄清楚为什么这段简单的代码不起作用:
from win32com.client import Dispatch
def RunExcelMacro(name):
myExcel = Dispatch('Excel.Application')
myExcel.Visible = 0
myExcel.Workbooks.Add('C:\AC_Software\TestDatei.xls')
myExcel.Run(name)
myExcel.DisplayAlerts = 0
myExcel.Quit()
if __name__ == "__main__":
RunExcelMacro('Makro_test')
它应该运行 Excel 文件“TestDatei.xls”中包含的 vba 脚本“Makro_test”。我在办公室的 64 位 Windows 7 台式机上尝试了 Python 和 Java 版本(32 位和 64 位)的不同组合。我还在路径中尝试了不同的斜杠和反斜杠组合(反斜杠和正斜杠,简单,双)。不幸的是,错误消息是德语的。但如果你们中的一些人可以从中检测到任何东西,这里是:
Traceback (most recent call last):
File "C:\Users\alloun\workspace\MyTestProject\root\nested\example.py", line 22, in <module>
RunExcelMacro('Makro_test')
File "C:\Users\alloun\workspace\MyTestProject\root\nested\example.py", line 16, in RunExcelMacro
myExcel.Workbooks.Add('C:\AC_Software\TestDatei.xls')
File "<COMObject <unknown>>", line 2, in Add
pywintypes.com_error: (-2147352567, 'Ausnahmefehler aufgetreten.', (0, u'Microsoft Excel', u"'TestDatei.xls' wurde nicht gefunden. \xdcberpr\xfcfen Sie die Rechtschreibung des Dateinamens, und \xfcberpr\xfcfen Sie, ob der Speicherort der Datei korrekt ist.\n\nWenn Sie versuchen, die Datei \xfcber die Liste der zuletzt ge\xf6ffneten Dateien zu \xf6ffnen, stellen Sie sicher, dass die Datei nicht umbenannt, verschoben oder gel\xf6scht wurde.", u'xlmain11.chm', 0, -2146827284), None)