欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 请问vba调用python的模块如何返回两个列表?

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有1916人关注过本帖树形打印复制链接

主题:请问vba调用python的模块如何返回两个列表?

帅哥哟,离线,有人找我吗?
yukizzc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/4/5 12:16:52 [显示全部帖子]

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("jzt_ta")
      If ret <> 1 Then
              '载入失败,打印错误原因
              Msg = d.GetErrorInfo()
              Application.MsgOut Msg
              Set Msg = Nothing  '使用完毕需要 Set Nothing销毁以免出现内存泄漏
              Exit Sub
      End If
      '调用Python模块函数,函数名pytestmodule,参数为Array外部对象d1
      set Data = d.CallObject("zhibiao_vba",d1,d1)
       If IsEmpty(Data) Then
              Msg = d.GetErrorInfo()
              Application.MsgOut Msg
              Set Msg = Nothing   '使用完毕需要 Set Nothing销毁以免出现内存泄漏
              Exit Sub
       End If
       '打印返回值
       application.MsgOut Data.GetAt(1)
       Set d = nothing  '使用完毕需要 Set Nothing销毁以免出现内存泄漏
       set d1 = nothing  '使用完毕需要 Set Nothing销毁以免出现内存泄漏
end Sub
call Test

 

 

 

 

python模块中代码

 

from PythonApi import *
import numpy as np
def zhibiao_vba(x1,x2):
    print(x1)
    a = [1,2,3]
    return a


 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/4/6 10:00:43 [显示全部帖子]

这种不行的,vba和python不一样,有些格式没有办法的


 回到顶部