xlwings excel(四)

前言

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

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

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

  1. 准备工做
  2. 安装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模块自定义宏和函数的模版,而后简单介绍了如何去定义宏和函数。注意:spa

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