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