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


    前言

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

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

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

    1. 准备工作
      1. 安装xlwings模块
      2. 下载模版文件,百度网盘链接:xlwings自定义宏和函数模版

        文件列表

        其中,自定义模版可以修改名称,mymacro为自定义宏的python文件,myfun为自定义函数的python文件。
      3. 设置Excel信任中心,信任对VBA工程对象模型的访问

        信任中心设置
    2. 自定义宏
      用记事本打开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宏。

      执行
    3. 自定义函数
      准备工作是一致的,打开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模块自定义宏和函数的模版,然后简单介绍了如何去定义宏和函数。注意:

    • 一个python文件,只能定义一个宏或者函数,所以模版中已经默认分别给出了三个宏和函数文件,方便直接使用。
    • python文件的名称和相对文件位置不能改变,Excel文件的文件位置不能改变,名称可以改变。如需修改,请参考xlwings官方文档。


    作者:LuckyFrog
    链接:http://www.jianshu.com/p/7d6f53e3e6e9
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    结构层HTML + 表现层CSS
    移动端:项目实战
    移动端:开发技巧
    两个对象数组,把其中相同的name的before相加,不同的对象添加到数组里
    js中遍历数组和遍历对象
    css学习笔记一
    Angular2父子组件数据传递之@ViewChild获取子组件详解
    css知识点总结
    js中的apply,call,arguments,callee,caller详解
    javascript中的排序
  • 原文地址:https://www.cnblogs.com/catgatp/p/7875701.html
Copyright © 2020-2023  润新知