【问题标题】:name 'Application' not defined名称“应用程序”未定义
【发布时间】:2019-07-13 00:51:41
【问题描述】:

我正在尝试打开一个 Excel 工作簿并使用 python 运行一个宏。但是,宏存在于我的个人宏库中,我需要从那里运行它。当我尝试这样做时,出现以下错误:

“无法运行宏宏可能在此工作簿中不可用...”

为了解决这个问题,我使用了 Application.run() 希望这将允许我运行我试图运行它的工作簿中不存在的宏。但是,当我这样做时,我得到另一个错误:

“名称‘应用程序’未定义”

下面是我的代码。这真的很简单。

.
.
.
# Open workbook
wb2 = xw.Book('C:/Users/AChakrav/Documents/LTspiceXVII/Circuits/INV/INVAMP_MEAS_Script.xlsm')
time.sleep(5)

Application.Run "'PERSONAL.XLSB'!CompiledTableGenerator"
#ExcelMacro_2 = wb2.macro('PERSONAL.XLSB!CompiledTableGenerator')
#ExcelMacro_2()
time.sleep(5)

【问题讨论】:

    标签: python excel vba


    【解决方案1】:

    您可以从不同的角度看问题 - 例如,尝试在 Python 中引用 Personal.xlsb 文件并从那里尝试一下。例如,要找到它,在 VBA 的即时窗口中运行它:

    ?Application.StartupPath
    

    稍后在 Python 代码中对其进行硬编码。

    然后在Personal.xlsb中写一些简单的东西:

    在 Python 中,安装 pipiwin32 并运行如下代码:

    import win32com.client
    
    xl=win32com.client.Dispatch('Excel.Application')
    xl.Workbooks.Open('C:\\Users\\gropc\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\Personal.xlsb')
    xl.Application.Run('Personal.xlsb!Modul1.SomeApplication')
    

    将显示带有日期和时间的消息框。 VBA 代码应该写得很好,以确保它正确引用了您需要的工作簿,但这是另一个问题。

    【讨论】:

    • 我尝试了您的建议,我能够打开个人工作簿并运行宏。运行活动工作簿中存在的宏没有问题。问题是从另一个活动工作簿运行个人工作簿中存在的宏。
    猜你喜欢
    • 2014-08-26
    • 2020-09-14
    • 2011-06-26
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多