【问题标题】:Python: Script for running Excel VBA script not runningPython:用于运行 Excel VBA 脚本的脚本未运行
【发布时间】:2012-11-15 05:29:59
【问题描述】:

我之所以写作,是因为在似乎搜索了一半的互联网之后,我无法弄清楚为什么这段简单的代码不起作用:

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)

【问题讨论】:

  • 你试过转义反斜杠吗?
  • 我只是想建议将'C:\AC_Software\TestDatei.xls' 替换为r'C:\AC_Software\TestDatei.xls''C:\\AC_Software\\TestDatei.xls'。但由于AT 都是大写的,所以它一定是别的东西......
  • @FrédéricHamidi 你试过了吗?这里,'\a\A\t\T' 解析为 '\x07\\A\t\\T',所以 \A\T 解析为 \\A\\T
  • @David 您尝试访问的文件真的在您期望的位置吗?
  • @glglgl,你是对的,我的立场是正确的。当下一个字符不是有效的转义序列时,Python 确实会按字面意思解释反斜杠。

标签: python excel windows-7-x64 win32com vba


【解决方案1】:

这是英文错误信息:

pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, u'Microsoft Excel', u"'TestDatei.xls' 找不到。检查文件名的拼写,并验证文件位置正确。\n\n如果您尝试从最近使用的文件列表中打开该文件,请确保该文件未被重命名、移动或删除。", 'xlmain11.chm', 0, -2146827284),无)

确保路径正确,然后尝试使用原始字符串 r'C:\AC_Software\TestDatei.xls'。我尝试了相同的代码,它适用于我拥有的文件。

【讨论】:

  • 非常感谢您的回答 Mark 不幸的是它对我不起作用 :( 也许您可以阅读我的最后一条评论,看看我使用的与 Python、IDE、OS 和 JRE 相关的内容是否有意义你。
【解决方案2】:

请参阅下面使用 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多