Ann*_*nha 10 python excel vba excel-vba
我有一个python代码,它读取3个参数(标量)和一个文本文件,然后返回一个double的向量.我想在vba中编写一个宏来调用这个python代码并将结果写在同一个excel表中.我想知道最简单的方法是什么,这里有一些我发现的东西:
在vba中调用shell()函数但是获取返回值似乎并不那么容易.
将python代码注册为COM对象并从vba调用它 - >我不知道如何做到这一点所以如果你有一些例子它会非常受欢迎
在自定义工具箱中创建自定义工具,在vba中创建地理处理对象然后添加工具箱,然后我们可以直接通过地理处理对象使用自定义工具,但这也是我不知道该怎么做的事情.
有小费吗?
ren*_*ick 17
请仔细遵循这些步骤
一旦安装完成,打开命令提示符并转到
C:\ Python25\LIB \站点包\ win32comext\axscript \客户端
执行\> python pyscript.py
你应该看到消息已注册:Python
转到ms office excel并打开工作表

切换到代码编辑器并插入以下代码
Dim WithEvents PyScript作为MSScriptControl.ScriptControl
Run Code Online (Sandbox Code Playgroud)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代码作为宏来调用吗?您可以在 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( )
Run Code Online (Sandbox Code Playgroud)