美文网首页Python量化VBA For Excelxlwings
插上翅膀,让Excel飞起来——xlwings(四)

插上翅膀,让Excel飞起来——xlwings(四)

作者: 早起收果子 | 来源:发表于2017-04-29 12:19 被阅读4886次

前言

当年看《别怕,Excel VBA其实很简单》相见恨晚,看了第一版电子版之后,买了纸质版,然后将其送人。而后,发现出了第二版,买之收藏。之后,发现Python这一编程语言,简直是逆天,业余非程序员的福音。人生苦短,我用python。简短几句代码,实现好多自己不敢想的功能。
自学VBA发现对VBA和python,我有着这样几个看法:(只是针对自动化办公)

  • 非专业表哥,只是普通办公,希望偶尔遇到点重复的工作可以自动化一下。VBA对于我来说,要记得东西还是太多了,语法上不简洁。每写一个功能,代码太长了。
  • VBA虽然在很多程序都有接口,但是,应用范围还是略窄,对于一般用户深入学习后,但是,应用场景太少。有任务驱动,才有动力去提高水平。
  • Python运行速度绝对不算快的,但是,绝对比在Excel中运行VBA的速度还是要快很多
  • Python语言简洁(python大法好),模块丰富,有好多大神造好的轮子等着我们去用。
  • Python应用范围广,既能帮我解决偶尔遇到的表格问题,也能和其他各种软件或者平台联接起来。

运用Python自定义宏(仅限Windows)

  1. 准备工作
  2. 安装xlwings模块
  • 下载模版文件,百度网盘链接:xlwings自定义宏和函数模版
    文件列表
    其中,自定义模版可以修改名称,mymacro为自定义宏的python文件,myfun为自定义函数的python文件。
  • 设置Excel信任中心,信任对VBA工程对象模型的访问


    信任中心设置
  1. 自定义宏
    用记事本打开mymacro0,输入下列语句:
import xlwings as xw
@xw.sub
def my_macro():
    wb = xw.Book.caller()
    wb.sheets[0].range('A1').value = wb.name

则宏名称为my_macro的宏就编写好了,将工作簿的名称输入到A1单元格。自定义宏只需要前两句不变,后面内容自己编写,即自定义宏需要以下面的语句为开头

import xlwings as xw
@xw.sub

运行方式:先alt+F8运行ImportPythonUDFs内置宏,导入我们的自定义宏和函数,导入后,再运行我定义的my_macro宏。


执行
  1. 自定义函数
    准备工作是一致的,打开myfun0,写入第一个自定义函数:
import xlwings as xw
@xw.func
def myfun():
    wb = xw.Book.caller()
    return wb.name

注意,开头语句为@xw.func而不是@xw.sub了,然后函数相对于宏,有返回值,所以用了return语句。自定义好函数之后,刚可以像Excel自带函数一样的去使用了。如在A1单元格输入”=myfun()",则会得到工作簿的名称。

结束

本文给出了xlwings模块自定义宏和函数的模版,然后简单介绍了如何去定义宏和函数。注意:

相关文章

网友评论

  • 8fdd692b3af9:我想知道用python 怎么调用 excel 中已经写好的宏文件,而不是调用python写的宏文件
    8fdd692b3af9:@黄征 真的可以啊,我试了。
    8fdd692b3af9:我待会去试一下
    welder77:@Jackie_You
    wb = xls.Book(excel_case)
    clear_result = wb.macro('C_Result') clear_result()

    C_Result 是excel里宏的名字
  • 财经事件:你好,我想问下,我在操作的时,在“运行ImportPythonUDFs”时出现:“运行时错误‘53’,文件未找到:xlwings32.dll”的错误是怎么回事?
    3726512dc08e:@明声Nova 同问
    64e88a4b950d:@财经事件 我也有这个错误,不知道怎么处理
  • 酱油fang:为什么一直说DLL调用约定错误呢
    财经事件:我也想知道为什么????
  • Nickeeey:请问 ImportPythonUDFs 在哪里设置?
  • 50e344dea611:谢谢,写的很好。
  • fb12b73f17a9:赞一个。
    fb12b73f17a9:@LuckyFrog 真用心,辛苦了!
    早起收果子:我在上一篇,更新了一个图片,讲xlwings里面Book,App,Sheet对象的,有了那张图,你应该就比较清楚了。

本文标题:插上翅膀,让Excel飞起来——xlwings(四)

本文链接:https://www.haomeiwen.com/subject/rcdzzttx.html