【发布时间】:2020-01-14 01:54:33
【问题描述】:
我正在尝试编写一个 python 脚本,它将 VBA 代码插入到由不同程序输出的工作簿中,以简化数据分析。现在我让用户进入 Excel,打开 VBA 编辑器并从文件中添加一个模块,然后运行宏。我已经完成了 python 脚本来做我想做的事情,但我仍然对 Excel 信任设置感到困扰。这个想法是让尽可能多的用户“工作”退出流程,根据这篇文章:Programmatic Access To Visual Basic Project Is Not Trusted,我的代码应该可以允许访问,但我仍然收到 com_error。当然,我不能就我的问题对这个问题发表评论,所以我在这里写一个全新的问题。我的公司非常重视网络安全,所以我也考虑过这可能只是某种原因是不允许的,但我不确定这是否可行。非常感谢任何帮助或建议。
我的代码的必要部分:
import win32com
import win32com.client
import pythoncom
import tkinter as tk
from tkinter import filedialog
import ctypes
import win32api
import win32con
excel = win32com.client.Dispatch("Excel.Application")
workbook = excel.Workbooks.Open(Filename=fs)
key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,
"Software\\Microsoft\\Office\\16.0\\Excel"
+ "\\Security", 0, win32con.KEY_ALL_ACCESS)
win32api.RegSetValueEx(key, "AccessVBOM", 0, win32con.REG_DWORD, 1)
excelModule=workbook.VBProject.VBComponents.Add(1)
excelModule.CodeModule.AddFromString(macro)
我也尝试在打开文件之前进行密钥修改,但这并没有改变任何东西。
【问题讨论】: