如何在Python中从VBA发送/读取数据?

如何在Python中从VBA发送/读取数据?,python,excel,vba,Python,Excel,Vba,背景 现在我正在创建一个宏来帮助在VBA中自动创建一些图形。但是,创建图形需要执行特定的任务,例如,根据以前的实例,序列中的某些点会变大。我更愿意用python进行这种数据操作 问题 我希望使用excel实现其用户友好的界面,但希望处理Python中的所有数据操作。如何将我在VBA中创建的数据发送到python。为了澄清这一点,我没有试图阅读excel表格中的特定单元格 如果我在VBA中定义字符串,请说 Dim example_string as String example_string

背景

现在我正在创建一个宏来帮助在VBA中自动创建一些图形。但是,创建图形需要执行特定的任务,例如,根据以前的实例,序列中的某些点会变大。我更愿意用python进行这种数据操作

问题

我希望使用excel实现其用户友好的界面,但希望处理Python中的所有数据操作。如何将我在VBA中创建的数据发送到python。为了澄清这一点,我没有试图阅读excel表格中的特定单元格

如果我在VBA中定义字符串,请说

 Dim example_string as String

 example_string = "Hello, 1, 2, 3, Bye"
如何将我在VBA中创建的信息发送到Python进行操作

更多细节

我在excel中有一个由用户填写的文本框,我使用VBA读取该文本框。我想将txt数据从VBA发送到python。用户高亮显示所需的单元格,这些单元格不一定每次都相同,单击按钮并填充文本框。我不想使用范围或特定单元格选择,因为这需要用户专门将所有所需数据输入单元格(太耗时)


我想了解如何在VBA和python之间发送数据的基本过程。

您可以用python完成整个过程,它将更加高效,您可以使用excel或sqlite3作为数据库,阅读关于tkinter的图形界面,使用pandas和numpy处理数据

如果坚持向python发送数据,请将sys导入python脚本以读取参数,然后使用shell()方法从vba运行它

编辑:您想要一个示例,这里是=>

打开新的excel文件,创建如下过程(VBA代码):

想法是用python创建某种解析器,这是我的愚蠢示例(python代码):

请注意,我是如何使用sys读取一个参数的,并且我导出以实际查看一些结果的,因为否则您将只看到一个黑屏弹出一毫秒


我也找到了这篇文章,但它要求您将python脚本封装在一个类中,我不知道这是否适合您

您可以用python完成整个工作,它会更高效,您可以使用excel或sqlite3作为数据库,阅读关于tkinter的图形界面,使用pandas和numpy处理数据

如果坚持向python发送数据,请将sys导入python脚本以读取参数,然后使用shell()方法从vba运行它

编辑:您想要一个示例,这里是=>

打开新的excel文件,创建如下过程(VBA代码):

想法是用python创建某种解析器,这是我的愚蠢示例(python代码):

请注意,我是如何使用sys读取一个参数的,并且我导出以实际查看一些结果的,因为否则您将只看到一个黑屏弹出一毫秒


我还找到了这篇文章,但它要求您将python脚本封装在一个类中,我不知道这是否适用于您

谢谢,是的,我最初是作为数组制作的,但忘了删除它们。谢谢,是的,我最初是作为数组制作的,但忘了删除它们。我可以举一个后一种选项的示例吗?我很好奇sys将如何帮助您阅读VBA中的信息。我已经用示例编辑了答案,希望它有用。我可以有后一个选项的示例吗?我很好奇sys将如何帮助您阅读VBA中的信息。我已经用示例编辑了答案,希望它有用
Sub sendToPython()

    Dim shell As Object
    Dim python As String
    Dim callThis As String
    Dim passing

    Set shell = VBA.CreateObject("Wscript.Shell")

    '/* This is where you installed python (Notice the triple quotes and use your own path *always)*/
    python = """C:\Users\yourUserName\appdata\local\programs\python\python37\python.exe"""

    '/* This is the data you'll be passing to python script*/
    passing = "The*eye*of*the*tiger" 

    callThis = "C:\Users\yourUserName\desktop\yourScriptName.py " & passing & ""

    shell.Run python & callThis 

End Sub
import sys

f = open("log.txt", "w")
arg = (sys.argv[1]).split("*")
s = " "
arg = s.join(arg)
print("This is the parameter i've entered: " + arg, file=f)