发布于2020-01-17 13:00 阅读(1640) 评论(0) 点赞(7) 收藏(5)
让我们使用xlwings文档中的示例。
给出以下python代码:
import numpy as np
from xlwings import Workbook, Range
def rand_numbers():
""" produces std. normally distributed random numbers with shape (n,n)"""
wb = Workbook.caller() # Creates a reference to the calling Excel file
n = int(Range('Sheet1', 'B1').value) # Write desired dimensions into Cell B1
rand_num = np.random.randn(n, n)
Range('Sheet1', 'C3').value = rand_num
这是原始示例。
假设我们将其略微修改为:
import numpy as np
from xlwings import Workbook, Range
def rand_numbers():
""" produces std. normally distributed random numbers with shape (n,n)"""
wb = Workbook.caller() # Creates a reference to the calling Excel file
n = int(Range('Sheet1', 'B1').value) # Write desired dimensions into Cell B1
rand_num = np.random.randn(n, n)
return rand_num #modified line
我们使用以下调用从VBA调用它:
Sub MyMacro()
dim z 'new line'
z = RunPython ("import mymodule; mymodule.rand_numbers()")
End Sub
我们得到z
一个空值。
有什么方法可以直接将值返回给vba,而无需写入文本文件,也可以将值放在excel文档的第一位?
感谢您的指导。
RunPython不允许您根据xlwings文档返回值。要解决这些问题,请使用UDF,请参阅VBA:用户定义的函数(UDF)-但是,当前仅限于Windows。
https://docs.xlwings.org/en/stable/udfs.html#udfs
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/227491/8281223b82126c320ff3/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!