我写这封信是因为后看似搜索一半的互联网剧本,我无法弄清楚为什么这个简单的代码是不工作:的Python:用于运行Excel VBA脚本不运行
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)
你试过逃避反斜杠吗? – filmor
我只是想建议用'r'C:\ AC_Software \ TestDatei.xls''或'C:\\ AC_Software \\ TestDatei.xls''替换'C:\ AC_Software \ TestDatei.xls'' 。但是因为'A'和'T'都是大写字母,所以它必须是别的... – glglgl
@FrédéricHamidi你试过了吗?在这里,''\ a \ A \ t \ T''解析为''\ x07 \\ A \ t \\ T'',所以'\ A \ T'解析为'\\ A \\ T'。 – glglgl