我有一个python代码,它读取3个参数(标量)和一个文本文件,然后返回一个double的向量。我想在vba中编写一个宏来调用这个python代码并将结果写在同一个excel表中。我想知道最简单的方法是什么,这里有一些我发现的东西:
有小费吗?
请仔细遵循这些步骤
\> python pyscript.py
你应该看到消息注册:PythonPrivate 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代码称为宏吗?您可以在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( )
以下是Excel与Python使用的良好链接:
continuum.IO/using-excel
提及xlwings,DataNitro,ExPy,PyXLL,XLLoop,openpyxl,xlrd,xlsxwriter,xlwt
我还发现ExcelPython正在积极开发中。
2.
你可以用VBA + Python做什么如下:
编译你的py脚本,它接受输入并生成输出作为文本文件或从控制台。然后VBA将为py准备输入,调用预编译的py脚本并读回其输出。
3.
考虑支持Python脚本的Google Docs,OpenOffice或LibreOffice。
这假设具有COM或MS脚本接口的可用选项无法满足您的需求。
这不是免费的方法,但值得一提(在福布斯和纽约时报上刊登):
这不是免费的商业用途:
PyXLL - Excel插件,可以在Excel中调用用Python编写的函数。
xlwings是一个获得BSD许可的Python库,可以很容易地从Excel调用Python,反之亦然。
有关如何执行此操作的CodeProject教程。
见http://www.codeproject.com/Articles/639887/Calling-Python-code-from-Excel-with-ExcelPython。
进程com工具中的另一个开源python-excel。这允许以紧密集成的方式从excel执行python脚本。