# VBA: RunPython
## xlwings 加载项
要访问`RunPython`函数,您需要xlwings 加载项(或VBA模块),请参阅[加载项](addin.md)
对于新项目,最简单的入门方法是使用带有quickstart命令的命令行客户端,请参阅[命令行客户端](command_line.md)详情:
~~~
$ xlwings quickstart myproject
~~~
## 使用“RunPython”调用Python
在VBA编辑器(`Alt-F11`)中,将下面的代码写入VBA模块。 `xlwings quickstart`会自动添加一个带有示例调用的新模块。 如果您想从头开始,可以通过`Insert> Module`添加新模块。
~~~
Sub HelloWorld()
RunPython ("import hello; hello.world()")
End Sub
~~~
这将调用`hello.py`中的以下代码:
~~~
# hello.py
import numpy as np
import xlwings as xw
def world():
wb = xw.Book.caller()
wb.sheets[0].range('A1').value = 'Hello World!'
~~~
然后,您可以将`HelloWorld`附加到一个按钮,或者通过点击`F5`直接在VBA编辑器中运行它。
>[info]注意
将`xw.Book.caller()`放在从Excel调用的函数中,而不是作为全局变量调用。 否则,它会阻止Excel在退出时正常关闭,并在您使用`OPTIMIZED_CONNECTION = True`时离开僵尸进程。
## 函数参数和返回值
虽然在技术上可以在`RunPython`中的函数调用中包含参数,但它不是很方便。 此外,`RunPython`不允许您返回值。 要解决这些问题,请使用UDF,请参阅[VBA: User Defined Functions (UDFs)](udfs.md) - 但是,目前仅限于Windows。