从excel / vba中调用python脚本
我有一个Python代码,读取3个参数(标量)和一个文本文件,然后返回给我一个双向量。 我想在vba中编写一个macros来调用这个python代码,并将结果写入一个相同的excel表单中。 我想知道最简单的方法是什么,下面是我发现的一些东西:
-
在vba中调用shell()函数,但获取返回值似乎并不那么容易。
-
注册Python代码作为一个COM对象,并从vba调用它 – >我不知道如何做到这一点,所以如果你有一些例子,这将是更多的欢迎
-
在自定义工具箱中创build一个自定义工具,在vba中创build一个地理处理对象,然后添加工具箱,然后我们可以直接通过地理处理对象使用自定义工具,但这也是我不知道该怎么做的。
有小费吗?
请仔细按照这些步骤
- 转到Activestate并获得ActivePython 2.5.7 MSI安装程序。
我有2.6.x的DLL地狱问题 - 安装在你的Windows机器上
-
一旦安装完成,打开命令提示符并转到
C:\ Python25 \ LIB \站点包\ win32comext \ axscript \客户端
-
执行
\> python pyscript.py
你应该看到消息Registered:Python -
去ms office excel打开工作表
- 转到工具>macros> Visual Basic编辑器
- 添加对Microsoft脚本控件的引用
- 添加一个新的用户表单。 在用户窗体中添加一个CommandButton
-
切换到代码编辑器并插入以下代码
Dim WithEvents PyScript作为MSScriptControl.ScriptControl
Private Sub CommandButton1_Click() If PyScript Is Nothing Then Set PyScript = New MSScriptControl.ScriptControl PyScript.Language = "python" PyScript.AddObject "Sheet", Workbooks(1).Sheets(1) PyScript.AllowUI = True End If PyScript.ExecuteStatement "Sheet.cells(1,1).value='Hello'" End Sub
执行。 享受和扩大必要的
下面是从Python使用Excel的一个很好的链接:
continuum.io/using-excel
提及xlwings,DataNitro,ExPy,PyXLL,XLLoop,openpyxl,xlrd,xlsxwriter,xlwt
另外我发现ExcelPython正在积极开发中。
2。
你可以用VBA + Python做什么:
编译你的py脚本,把input作为文本文件或从控制台生成输出。 然后VBA将为py准备input,调用预编译的py脚本并读回它的输出。
3。
考虑支持Python脚本的Google Docs,OpenOffice或LibreOffice。
这是假设COM或MS脚本接口的可用选项不能满足您的需求。
这不是免费的方法,但值得一提(在“福布斯”和“纽约时报”上刊登):
这不是免费的商业用途:
PyXLL – Excel插件,使用Python编写的函数可以在Excel中调用。
你是否需要将Python代码作为macros调用? 您可以在Python脚本中使用COM挂钩来指导Excel,避免使用其他语言:
import win32com.client # Start Excel xlApp = win32com.client.Dispatch( "Excel.Application" ) workbook = xlApp.Workbooks.Open( <some-file> ) sheet = workbook.Sheets( <some-sheet> ) sheet.Activate( ) # Get values spam = sheet.Cells( 1, 1 ).Value # Process values ... # Write values sheet.Cells( ..., ... ).Value = <result> # Goodbye Excel workbook.Save( ) workbook.Close( ) xlApp.Quit( )
2017年更新
xlwings是BSD授权的Python库,可以很容易地从Excel调用Python,反之亦然。
- 脚本 :使用接近VBA的语法,从Python自动化/与Excel进行交互。
- macros :用干净而强大的Python代码replace凌乱的VBAmacros。
-
UDF :在Python中编写用户定义函数(UDF)(仅限Windows)。
-
安装
-
快速开始
CodeProject上有一个关于如何做到这一点的教程。
请参阅http://www.codeproject.com/Articles/639887/Calling-Python-code-from-Excel-with-ExcelPython 。
另一个开源的python-excel进程com工具。 这允许以紧密集成的方式从excel执行python脚本。