【问题标题】:Permission error for running Python on the back of VBAVBA背面运行Python的权限错误
【发布时间】: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 填充单元格?

标签: python excel 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 2020-12-23
    • 2020-08-18
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多