# SetKey 方法

CallObject(LPCTSTR Name, ...)

调用Python模块函数。
返回值: 成功返回 int float string Array 值,失败返回 Empty 空值。注意:当返回值为 string 类型时,使用完毕需要 Set Nothing销毁以免出现内存泄漏。字符串最大字节数 12 K。

参数
参数 说明
Name 函数名(注意区分大小写)
... 参数序列,参数值类型只能是 int float string Array 这4种类型,最多16个参数, 其中 string 类型参数最大字节数56个;其中Array是外部对象。
示例
'下列代码传参类型为Array外部对象
Sub Test()

    Dim d1 '创建一个变量      
    '创建Array外部对象,将对象实例置变量d1中
    Set d1 = CreateObject("Stock.Array")
    d1.AddBack(1)
    d1.AddBack(2)

    '创建外部对象,启用Python引擎 
    Set d = CreateObject("Stock.Python")

    '载入Python模块,模块名为MyPython
    ret = d.ImportModule("MyPython ")

    If ret <> 1 Then
        '载入失败,打印错误原因
        Msg = d.GetErrorInfo()
        Application.MsgOut Msg
        Set Msg = Nothing  '使用完毕需要 Set Nothing销毁以免出现内存泄漏
        Exit Sub
    End IF

    '调用Python模块函数,函数名pytestmodule,参数为Array外部对象d1
    Data = d.CallObject("pytestmodule",d1)

       If IsEmpty(Data) Then
            Msg = d.GetErrorInfo()
            Application.MsgOut Msg
            Set Msg = Nothing   '使用完毕需要 Set Nothing销毁以免出现内存泄漏
            Exit Sub
        End If

       '打印返回值 
        application.MsgOut "Result:"&Data
        Set d = nothing  '使用完毕需要 Set Nothing销毁以免出现内存泄漏
        set d1 = nothing  '使用完毕需要 Set Nothing销毁以免出现内存泄漏
end Sub
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

其中Python “MyPython”模块代码:

from PythonApi import *
import numpy as np 
def pytestmodule(par1):
    a1 = np.array(par1)
    return np.sum(a1)
1
2
3
4
5

应用于

Python 对象