以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5) ---- 请问vba调用python的模块如何返回两个列表? (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=185026) |
|
-- 作者:netwalker -- 发布时间:2021/4/4 23:02:55 -- 请问vba调用python的模块如何返回两个列表? vbs代码: Sub pyArrays() Dim inArray \'创建一个变量 \'创建Array外部对象,将对象实例置变量d1中 Set inArray = CreateObject("Stock.Array") inArray.AddBack(1) inArray.AddBack(2) \'创建外部对象,启用Python引擎 Set py = CreateObject("Stock.Python") \'载入Python模块,模块名为MyPython pymod = py.ImportModule("jzt_MyPython") If pymod <> 1 Then \'载入失败,打印错误原因 Msg = py.GetErrorInfo() Application.MsgOut Msg Set Msg = Nothing \'使用完毕需要 Set Nothing销毁以免出现内存泄漏 Exit Sub End If \'调用Python模块函数,函数名pytestmodule,参数为Array外部对象d1 set outArray = py.CallObject("return_arrays",inArray,inArray) If IsEmpty(outArray) Then Msg = py.GetErrorInfo() Application.MsgOut Msg Set Msg = Nothing \'使用完毕需要 Set Nothing销毁以免出现内存泄漏 Exit Sub End If \'打印返回值 \'application.MsgOut Vartype(outArray) item= outArray.GetAt(0) application.MsgOut Vartype(item) Set py = nothing \'使用完毕需要 Set Nothing销毁以免出现内存泄漏 set inArray = nothing \'使用完毕需要 Set Nothing销毁以免出现内存泄漏 end Sub python模块代码 def return_arrays(x1,x2): print(x1) print(type(x1)) a = [1,2,3] b = [4,5,6,7] return [a,b] 返回的是一个object,如何把python里面的a,b取出来? 谢谢! [此贴子已经被作者于2021/4/4 23:03:24编辑过]
|
|
-- 作者:yukizzc -- 发布时间:2021/4/5 12:16:52 -- Sub Test()
|
|
-- 作者:netwalker -- 发布时间:2021/4/6 9:57:07 -- 谢谢,这段代码是返回一个列表的情况,我的问题是python模块怎样返回两个列表? |
|
-- 作者:netwalker -- 发布时间:2021/4/6 10:00:07 -- 谢谢,这段代码是返回一个列表的情况,我的问题是python模块怎样返回两个列表? 比如: a = [1,2,3] b = [4,5,6,7] 我试了 return a,b ,结果报错。用 return [a,b],返回的是一个object,但a和b的内容取不出来,望指教!
|
|
-- 作者:yukizzc -- 发布时间:2021/4/6 10:00:43 -- 这种不行的,vba和python不一样,有些格式没有办法的 |