【问题标题】:Run python script stored in excel cell运行存储在excel单元格中的python脚本
【发布时间】:2022-01-01 05:17:08
【问题描述】:

我有 excel 工作簿,并且在范围(“A1”)中的工作表中,假设我在单元格中有这一行

print('Hello World')

有没有办法从 VBA 本身的单元格中运行这个 python 脚本?

非常感谢@Anu

Sub Test()
    Dim PID
    PID = Shell("python -c '" & Range("A1").Value & "'", vbNormalNoFocus)
End Sub

如何在 VBE 中将输出打印到即时窗口?

我试图将 python 脚本放在一个单元格中,但这并没有给我正确的输出(没有出现错误,但图像没有转换为 Photos/New 文件夹

import os
from PIL import Image

dirname_read = r"C:/Users/Future/Desktop/Photos/Demo/"
dirname_write = r"C:/Users/Future/Desktop/Photos/New/"
names = os.listdir(dirname_read)
count = 0

for name in names:
    img=Image.open(dirname_read+name)
    name=name.split(".")
    if name[-1] == "png" or name[-1] == "jpeg" or name[-1] == "PNG":
        name[-1] = "jpg"
        name = str.join(".", name)
        to_save_path = dirname_write + name
        img = img.convert('RGB')
        img.save(to_save_path)
        count+=1     
    else:
        name = str.join(".", name)
        to_save_path = dirname_write + name
        img.save(to_save_path)

images = [file for file in os.listdir(dirname_write) if file.endswith(('jpeg', 'png', 'jpg', 'PNG'))]
for image in images:
    img = Image.open(dirname_write + image)
    img = img.resize((360, 540), Image.ANTIALIAS)
    rgb_img = img.convert('RGB')
    rgb_img.save(dirname_write + image)

print("Total Converted Count: ", count)

【问题讨论】:

  • 如果在同一台计算机上安装了python解释器,那么可以,可以通过shell将python代码传递给解释器。
  • 非常感谢您的回复。请给我一个简单的例子好吗?
  • python 代码是否需要在单元格 A1 中? .如果是这样,您可以将单元格值写入~tmp.py 文件,然后使用Wscript.Shell 执行它,请参阅example here
  • 非常感谢。这对我来说是一种解决方法。
  • 在收到原始问题的答案后通过添加新要求来编辑您的问题也不好!如果您有一个新问题,那么我建议您接受这个问题的答案,并打开一个新问题并提出额外要求!

标签: python excel vba


【解决方案1】:

使用 VBA,您应该能够运行 python shell。这样您就可以将代码传递给它。 python -c 'print(f"test")' -c 标志允许将代码作为字符串传递。

编辑:VBA 代码看起来很像 PID = Shell("python -c 'Range("A1").Value'", vbNormalNoFocus)(我正在考虑这部分,因为 VBA 不是我的主要语言)

【讨论】:

  • 非常感谢。你能给我更多的细节吗?我需要执行此类解决方案的步骤。我会使用Shell吗?
  • 你会在 VBA 中使用 Shell,但 VBA 不是我的主要语言,所以你可能需要做更多的研究。
  • 非常感谢。我已将其添加到问题中,还有一个与之相关的问题?
  • 很抱歉,我不太了解 VBA,所以我无法真正帮助您。
  • 我认为你要么必须将焦点传递给 shell 命令;或者从已经打开的 cmd 运行 VBA 脚本。再说一次,VBA 不是我精通的东西,所以我不会提供太多帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
相关资源
最近更新 更多