Excel中VBA的Python编程访问

Excel中VBA的Python编程访问,python,excel,Python,Excel,我试图编写一个python脚本,将VBA代码插入到由不同程序输出的工作簿中,以简化数据分析。现在,我让用户进入Excel,打开VBA编辑器,从文件中添加一个模块,然后运行宏。我已经制定了python脚本来做我想要做的事情,但是我仍然为Excel信任设置所困扰。这样做的目的是尽可能多地减少用户的“工作”,根据这篇文章:,我的代码应该允许访问,但我仍然会遇到一个com_错误。当然,我不能对我的问题发表评论,所以我在这里写了一个全新的问题。我的公司非常重视网络安全,所以我也考虑过这可能是不允许的,但我

我试图编写一个python脚本,将VBA代码插入到由不同程序输出的工作簿中,以简化数据分析。现在,我让用户进入Excel,打开VBA编辑器,从文件中添加一个模块,然后运行宏。我已经制定了python脚本来做我想要做的事情,但是我仍然为Excel信任设置所困扰。这样做的目的是尽可能多地减少用户的“工作”,根据这篇文章:,我的代码应该允许访问,但我仍然会遇到一个com_错误。当然,我不能对我的问题发表评论,所以我在这里写了一个全新的问题。我的公司非常重视网络安全,所以我也考虑过这可能是不允许的,但我不确定这是否是一种有效的可能性。非常感谢您的帮助或建议

我的代码的必要部分:

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)

我还尝试在打开文件之前修改密钥,但这并没有改变任何事情。

好吧,我一直在玩,我自己也找到了答案。事实证明,在您甚至打开Excel应用程序之前都需要修改密钥。所以像这样:

import win32com
import win32com.client
import pythoncom
import tkinter as tk
from tkinter import filedialog
import ctypes
import win32api
import win32con

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)

excel = win32com.client.Dispatch("Excel.Application")
workbook = excel.Workbooks.Open(Filename=fs)
excelModule=workbook.VBProject.VBComponents.Add(1)
excelModule.CodeModule.AddFromString(macro)