excel vba 调用webbrowser_Excel调用python:应用在个性化查询存续债估值

在日常的债券一级和二级交易中,中债估值基本成为了价格的锚,其一举一动都会对个券的收益率产生重大影响。Wind能较为方便的看单个主体的估值,但是要实现非常个性化的筛选较为麻烦,比如时常会有下列需要:

1、  想知道近期3年左右市场上所有AA+城投的估值的分布情况 2、  想知道武汉所有AA+城投2-3年的估值分布情况以及利差 3、  想知道山西煤炭行业1-3年期AAA公募品种的估值情况 今天这篇文件能够智能化实现了这个功能,只要在Excel输入关键字,一按查询就能立即出来想要的结果,具体效果的视频可移步到公众号历史消息。

当然也可以通过VBA实现,每天导出所有存续债,再编写一个自动筛选VBA,只不过需要每天导出并处理Excel,非常消耗wind的提取量,而且会很卡。本文最重要其实还是展示在excel中如何运用python的功能,以往我们都是用python去处理Excel数据,但Excel在数据可视化以及简单的运算方便非常有优势,因此萌生了如何在Excel中去利用python的编程功能,从而能替换需要编写繁琐代码的VBA。

通过python+VBA+Excel工具简单的交互即可,python只需要不到20行代码,VBA只需4行,甚至不用启动python,只需要在Excel中输入关键字,就可以实现一键点击查询。

一、启动宏

如果Excel启动过宏,就跳过此步骤。否则执行下列步骤:

依次点击【文件】—【选项】—【信任中心】—【信任中心设置】—【宏设置】,勾选【启用所有宏】。

二、python安装模块

在pycharm里的settings下找到xlwings模块,并安装。然后在pycharm的console输入:

import xlwings as xw

xw.__path__

会出来如下结果,记住该文件的安装路径,后面会用到。 C:\Users\baoyx\AppData\Local\Programs\Python\Python37\Lib\site-packages\xlwings 57eca61bbc6a0629150694e1355cee77.png 三、将xlwing引入到Excel中

在第二部分我们输出了一个路径,现在要用上了。

第一步,去该路径下找到名称为addin的文件夹,其中包含一个名为xlwings.xlam的文件,双击它即可,没什么反应是正常现象。

第二步,在该路径下新建一个文件夹,我命名为bao,然后在bao的文件夹里新建一个Excel,我命名为存续债自动,最后保存为xlsm格式(前提是第一部分激活了宏)。

443c865358799ed48d7cd3909e80ea8a.png

打开刚刚新建的存续债自动.xlsm文件,按快捷键【Alt+F11】调出VBE(代码编辑器),点击【工具】—【引用】,勾选【xlwings】。

  ed45254cb88eb7802dae8c28ab6a7f1b.png 然后返回到Excel当中,发现菜单栏出现了xlwings板块,勾选上RunPython:Use UDF Server。 2396869bcbf55a3e6d5f2f0e272509fb.png

接着在上面的interpreter里添加自己的解释器路径(查询方法在之前的文件有写过,在pycharm里依次为【File】—【settings】—【project】—【project interpreter】),将下图蓝框内的路径,添加到上图Excel中的interpreter。

525e6c080af7b4eb2ae3af7fe91937fc.png

添加完成之后,python、Excel、VBA之间的交互已经安装好了,这样就可以在VBA中调用python的代码,然后输出到Excel中的表格里。

四、代码编制

我们在第三部分建立了一个名字为bao的文件夹,现在我们需要用上它,为了实现python、VBA和Excel能相互调用,我们把所需的数据文件都放在这个文件夹里。

08a72988ef914fd9b7752790da217da6.png

用excel通过VBA调用python的逻辑大概是这样的,比如上图中的mydata.xlsx是我的数据(当然数据如果太大可以用mysql),我要在我的Excel宏文件(存续债自动.xlsm)中实现自动化功能,我通过点击该宏文件的命令,去读取python中的代码,python代码再去调取我的数据mydata.xlsx,并返回到我的宏文件(存续债自动.xlsm)。因此这三个文件缺一不可,也最好在同一个文件夹里。

1、mydata.xlsx文件

这是我的数据文件,存储了所有信用债存续债以及他们的相关要素,这个文件可以用python和wind的交互可每日自动更新,具体见python自动更新存续信用债相关信息,本文不再讲述。

2、存续债自动.xlsm

打开该文件,设计查询的格式模板,A列和B列输入下图内容,查询的按钮用控件指定,以后就可以在B1到B6输入关键字即可点击查询,然后结果就会出现在右侧,如此再对数据进行观看和分析就极为方便。

8f50effcb1a51bcc69285e1d48b5f28f.png 3 、 python代码编制

我们在pycharm里新建一个hello.py文件,代码编制完成后将该文件移动到bao文件夹里。这个文件非常关键

7895b20a5d7aa7c98965bcfd09189af1.png

前3句是导入所需模块,第4句以下是自定义的world()函数,第6到11句是获取存续债自动.xlsm中的B1到B6的输入值,第12句是读取数据文件mydata,第13句至15句是筛选符合输入条件的数据(该句代码是核心)

2、VBA代码编制

在存续债自动.xlsm里按ALT+F11进入VBA编辑器,在sheet1编写如下代码,总共只需要4行,前三行的意思是清空D列和M列,主要是每次查询完的结果有可能不能覆盖之前的结果,所以需要在每次查询前清空所有内容。第四句是最为关键的一句话,大致意思是VBA先导入hello.py,然后再调用hello.world()函数。

37c26ad1c9031c0dd111a8ee3b84fea9.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值