VBA背面运行Python的权限错误

Posted

技术标签:

【中文标题】VBA背面运行Python的权限错误【英文标题】:Permission error for running Python on the back of VBA 【发布时间】:2021-04-30 13:42:54 【问题描述】:

我正在尝试创建一个带有按钮的简单 excel 文件,以从 excel 文件中填充单元格。我遇到的问题是,如果我打开了我的 excel 文件,python 由于权限错误而无法打开 excel(因为文件已经打开)。我知道一种简单的方法是在 VBA 中创建变量并让 python 完成所有计算,然后将其传递回 VBA。然后 VBA 将填充单元格。这不是我想要做的。我在网上看到人们能够在运行 python 并同时填充时保持 excel 打开。我错过了什么?从 VBA 打开时,有什么方法可以授予 python 权限?

将 Python 集成到 VBA 似乎相当简单。我使用以下代码在 VBA 中制作了一个模块:

Sub RunPythonScript()

Dim objShell As Object
Dim PythonExePath, PythonScriptPath As String
    Set objShell = VBA.CreateObject("Wscript.Shell")
    
    PythonExePath = """C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\python.exe"""
    PythonScriptPath = "E:\My Documents\Finance\Economy\excel2.py"
    
    objShell.Run PythonExePath & PythonScriptPath
    
End Sub 

对于python:

from openpyxl import load_workbook
wb = load_workbook('Python_Button.xlsm')
ws = wb["Sheet1"]

for i in range (1,21):
    currentCell = "A" + str(i)
    ws[currentCell] = i
wb.save('Python_Button.xlsm')
wb.close()

【问题讨论】:

不要从 Excel 运行 Python,只需运行 Python 即可打开 Excel。要么,要么您需要一个单独的工作簿来控制 Python 和其他 Excel 工作簿。 即使我更改 python 以打开不同的 excel 文件然后更改该文件,即使那样我也无法更改其他 excel 文件。我可以更改任何文件的唯一方法是从 python 控制台! 这可能是 XY 问题。你能解释一下你想做什么吗? 所以我想在 Excel 中有一个按钮来运行 python 脚本。这也将填满 Excell 工作表中的单元格。我感觉这可以使用win32com来实现。不知道如何。 这并没有描述你在做什么。您正在描述如何您想这样做。 Python 脚本有什么作用?为什么不能使用 VBA 填充单元格? 【参考方案1】:

所以这是一种方法:

Option Explicit
    
Sub RunPythonScript() 
 Dim objShell As Object 
 Dim PythonExe, PythonScript As String

 Set objShell = VBA.CreateObject("Wscript.Shell")
 PythonExe = """C:\Program Files (x86)\Microsoft Visual 
 Studio\Shared\Python37_64\python.exe"""
 PythonScript = """E:\My Documents\Finance\Economy\excel6.py"""
 objShell.Run PythonExe & PythonScript
End Sub

在 Python 上

import xlwings as xw
book.sheets["Sheet1"].range('A1').value = 100

现在可以在 Excel 表中添加一个按钮并调用 python 脚本来填充 excel。

【讨论】:

以上是关于VBA背面运行Python的权限错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 Microsoft Excel VBA 仅查询访问 accdb 文件时,“MSysObjects”没有读取权限(错误编号:-2147217911) - mdb 工作正常

安装python出现错误说无安装权限

python pip安装库时报错?

Python错误:PermissionError:[WinError 5]访问被拒绝

'PermissionError:[Errno 13]权限被拒绝',使用批处理文件运行python脚本后

Windows 上的 Gcloud 命令(使用 git bash)正在记录错误:WindowsApps/python3:权限被拒绝