Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:用于运行Excel VBA脚本的脚本未运行_Python_Excel_Windows 7 X64_Win32com_Vba - Fatal编程技术网

Python:用于运行Excel VBA脚本的脚本未运行

Python:用于运行Excel VBA脚本的脚本未运行,python,excel,windows-7-x64,win32com,vba,Python,Excel,Windows 7 X64,Win32com,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(nam

我写这篇文章是因为在搜索了一半的互联网后,我无法理解为什么这段简单的代码不起作用:

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_测试”。我在办公室的64位Windows7台式机上尝试了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)
回溯(最近一次呼叫最后一次):
文件“C:\Users\alloun\workspace\MyTestProject\root\nested\example.py”,第22行,在
RunExcelMacro(“Makro_测试”)
文件“C:\Users\alloun\workspace\MyTestProject\root\nested\example.py”,第16行,在RunExcelMacro中
myExcel.Workbooks.Add('C:\AC\u Software\TestDatei.xls')
文件“”,第2行,添加
pywintypes.com_错误:(-2147352567,“Ausnahmefehler aufgetreten.”,(0,u'Microsoft Excel',u"“TestDatei.xls”是一个很好的例子。\xdcberp\xfcfen你可以在男人们的约会中使用,并且\xfcberp\xfcfen你可以在korrekt ist的约会中使用它。\n\n如果你喜欢,你可以在约会中使用它\xf6ffneten-date-zu\xf6ffnen,stellen-sicher,date-date-nicht-umbnt,verschoben-oder-gel\xfc。“,u'xlmain 11.chm',0,-2146827284),无)

以下是英文错误消息:

pywintypes.com_错误:(-2147352567,'发生异常',(0,u'Microsoft Excel',u“'TestDatei.xls'找不到。请检查文件名的拼写,并验证文件位置是否正确。\n\n如果试图从最近使用的文件列表中打开文件,请确保该文件未被重命名、移动或删除。”,'xlmain11.chm',0,-2146827284),无)


请确保路径正确,并尝试使用原始字符串
r'C:\AC\u Software\TestDatei.xls'
。我尝试了相同的代码,它与我拥有的文件一起工作。

请参阅下面使用python运行Excel宏的代码。您可以在此网站-链接中找到代码

from __future__ import print_function
import unittest
import os.path
import win32com.client

class ExcelMacro(unittest.TestCase):
    def test_excel_macro(self):
        try:
            xlApp = win32com.client.DispatchEx('Excel.Application')
            xlsPath = os.path.expanduser('C:\test1\test2\test3\test4\MacroFile.xlsm')
            wb = xlApp.Workbooks.Open(Filename=xlsPath)
            xlApp.Run('macroName')
            wb.Save()
            xlApp.Quit()
            print("Macro ran successfully!")
        except:
            print("Error found while running the excel macro!")
            xlApp.Quit()
if __name__ == "__main__":
    unittest.main()

你试过避开反斜杠吗?我只是想建议用
r'C:\AC\u Software\TestDatei.xls'
'C:\\AC\u Software\\TestDatei.xls'
替换
'C:\AC\u Software\TestDatei.xls'
。但既然
A
T
都是大写字母,那肯定是另外一个字母…@FrédéricHamidi你试过这个吗在?这里,
'\a\a\t\t'
解析为
'\x07\\a\t\\t'
,因此
\a\t
解析为
\\a\\t
。@David是您试图访问的文件,确实是您希望访问的文件吗?@glglglgl,您说得对,我得到了更正。当下一个字符不是有效的转义序列时,Python确实会逐字解释反斜杠。Tha非常感谢你的回答,马克,不幸的是,它对我不起作用:(也许你可以阅读我最后的评论,看看我使用的Python、IDE、OS和JRE的相关内容对你是否有意义。