<p>您可以尝试更新注册表中的宏设置以允许所有宏运行。您需要以管理员身份运行Python脚本,或者确保注册表项具有适当的权限:</p>
<pre><code>import winreg
import os
import win32com.client
def registry_set_key(hive, regpath, key, type, value):
try:
hkey = winreg.OpenKey(hive, regpath, 0, winreg.KEY_ALL_ACCESS)
except FileNotFountError as e:
hkey = winreg.CreateKey(hive, regpath, 0, winreg.KEY_ALL_ACCESS)
try:
old = winreg.QueryValueEx(hkey, key)
except:
old = None
winreg.SetValueEx(hkey, key, 0, type, value)
winreg.CloseKey(hkey)
return old
if os.path.exists(r"C:\\Users\\siddharth.mungekar\\Desktop\\MemleakTest\\test.xlsm"):
# Set macro settings to 1 to allow all macros
old = registry_set_key(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Office\14.0\Excel\Security', 'VBAWarnings', winreg.REG_DWORD, 1)
xl = win32com.client.Dispatch("Excel.Application")
xl.Workbooks.Open(Filename="C:\\Users\\siddharth.mungekar\\Desktop\\MemleakTest\\test.xlsm")
xl.Visible = True
xl.Run('Mem_Leak')
# If there was an existing value, put it back
if old:
registry_set_key(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Office\14.0\Excel\Security', 'VBAWarnings', winreg.REG_DWORD, old[0])
</code></pre>
<p>注意,您可能需要根据安装的Office版本调整注册表路径,请使用REGEDIT进行检查。i、 e.确保<code>Office\14.0</code>存在。在</p>
<p>另请查看<a href="https://blogs.technet.microsoft.com/diana_tudor/2014/12/02/microsoft-project-how-to-control-macro-settings-using-registry-keys/" rel="nofollow noreferrer">Microsoft Project – how to control Macro Settings using registry keys</a>以获取更多信息。在</p>