首页 > 解决方案 > VBA背面运行Python的权限错误

问题描述

我正在尝试使用按钮创建一个简单的 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 

对于蟒蛇:

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()

标签: pythonexcelvba

解决方案


所以这将是一种方法:

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。


推荐阅读