在VBA背面运行Python的权限错误

2024-09-30 06:17:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个简单的excel文件,其中包含一个按钮,用于从excel文件填充单元格。我遇到的问题是,如果我打开了excel文件,python将无法打开excel,因为权限错误(因为该文件已打开)。我知道一个简单的方法是在VBA中创建变量,让python完成所有计算,然后将其传递回VBA。然后VBA将填充单元格。这不是我想做的。我在网上看到人们能够在运行python和同时填充的同时保持excel的打开状态。我错过了什么?从VBA打开python时,是否有某种方法授予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()

Tags: 文件方法权限asloadbuttonvbaexcel
1条回答
网友
1楼 · 发布于 2024-09-30 06:17:59

因此,这将是一种方法:

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

相关问题 更多 >

    热门问题