gpt4 book ai didi

python - 从 Python : macros may be disabled 运行 VBA 代码

转载 作者:行者123 更新时间:2023-12-05 07:34:45 24 4
gpt4 key购买 nike

尝试通过 Python 运行 Excel 宏时出现以下错误:

    Traceback (most recent call last):
File ".\test.py", line 17, in <module>
xlApp.Application.Run(MACRO)
File "<COMObject <unknown>>", line 14, in Run
File "C:\Users\twauchop\Desktop\Python\virtual_envs\gutenberg\lib\site-packages\win32com\client\dynamic.py", line 287, in _ApplyTypes_
result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel', "Cannot run the macro 'test'. The macro may not be available in this workbook or all macros may be disabled.", 'xlmain11.chm', 0, -2146827284), None)

我尝试了 other questions 中建议的许多修复方法.

我尝试了 'xlApp.Application.Run(wb.name + "!"+ MACRO)'

这是命名约定问题吗?我通过 Trust Center 启用了所有功能,并将 VBA sub 更改为 public。

附带说明一下,我也无法从以编程方式打开的工作簿中运行宏(即,如果我手动尝试)。但是,如果我手动打开工作簿,一切都很好。

我在 64 位系统 Windows 10 上运行 Python 3.6.5。

python :

    import win32com.client
import os
import traceback

DIRECTORY = r'C:\\Users\\twauchop\\Desktop\\Excel\\'
FILE = 'test.xlsb'
MACRO = 'test'
path = os.path.join(DIRECTORY, FILE)

if os.path.exists(path):
try:
xlApp = win32com.client.Dispatch('Excel.Application')
xlApp.DisplayAlerts = False
xlApp.Visible = True
wb = xlApp.Workbooks.Open(Filename=path, ReadOnly=1)
xlApp.Application.Run(MACRO)
wb.Close(SaveChanges=1)
xlApp.Application.Quit()
print('Code ran successfully.')

except:
print('An error was encountered; see traceback.')
print(traceback.format_exc())
xlApp.Quit()

VBA:

Public Sub test()
MsgBox "Hello World!"
End Sub

最佳答案

xlApp.Application.AutomationSecurity=1 需要在任何 xlApp.Application.Run(excelMacroNameHere) 代码之前执行,因为 AutomationSecurity 是习惯control (enable vs disable) macros 1 表示 enable all macros .

关于python - 从 Python : macros may be disabled 运行 VBA 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49972988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com