【发布时间】: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 填充单元格?