私が書いているのは、一見インターネットの半分を検索した後、この単純なコードが機能しない理由を理解できなかったからです。
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)