python - 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()
解决方案
所以这将是一种方法:
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。
推荐阅读
- python - 为什么'不在'返回 True 与包含其内部列表中的引用值的二维列表
- at-command - SIM800L:AT+CIICR 总是进入 PDP DEACT 状态
- java - PriorityQueue (Java) 的字符串排序问题
- kubernetes - 如何暂停然后恢复谷歌云中的 Kubernetes 服务?
- python - Python中的颜色,标签
- excel - 如何在没有Visual Basic的情况下根据excel中的颜色自动将行复制到excel中的另一个工作表?
- kubernetes - 在 k8s 中托管我的 cli 应用程序的最佳方式是什么?
- python - 循环遍历熊猫数据框字典并进行修改的最佳做法是什么?
- highcharts - highcharts 导出时间戳未转换为日期
- windows - 无法删除我从 gitlab 克隆的 pycharm 项目(Windows 10)