excel 宏编程_在 Excel 中使用 Python 开发宏脚本

点击上方蓝字,每天一起学 Python,文末领送书福利

1d2aa036878a40a35122258185c7ce7a.png

文 | varlemon

编辑 | EarlGrey

推荐 | 编程派公众号(ID:codingpy)

之前发文介绍过一个叫GridStudio的神器,可以在网页版应用中将 Python 与表格处理结合起来。但是那并不是真正地在 Excel 中使用 Python 了,今天介绍一个叫 xlpython 的库,通过它我们可以用 Python 来开发 Excel 的宏脚本,真正实现在 Excel 中调用 Python。

公众号:编程派Python 与 Excel 终于在一起了

基本环境

  • 操作系统:Windows 10 x64

  • Office:2016

安装Python

1.下载Python安装包

登录[https://www.python.org/downloads/windows/]进行下载 Python2.x或Python3.x均可,推荐Python3.x(因为2020年1月1日起Python2就停止服务了…)

981dc10a6b7e1972ab61ee8fe0c4c879.png

2.安装Python

安装前,勾选 AddPython3.xto PATH选项。安装完毕之后,在Windows控制台可直接使用 python命令。

498173ee4525ad7101a1a6150fe1ab4e.png

3.检查是否安装成功

Win+R,打开 运行,输入 PowerShell,打开命令行。输入 python-V,查看Python版本号。

c7ecea10444f9c7af93ed715552baa4c.png

4.安装PythonWin32库

Python2.x 按以下方式安装

pip install pypiwin32 -i https://mirrors.aliyun.com/pypi/simple/

Python3.x 按以下方式安装

pip install pywin32 -i https://mirrors.aliyun.com/pypi/simple/

安装ExcelPython

1.从[https://sourceforge.net/projects/excelpython/files/]处,下载 ExcelPython

或[点击此处]直接下载

add741e606feb99a7b5c812a0fd73a2a.png

cbfc8a50c6fc9967c369216029a2d9db.png

07fc09f343de89045d0b04342b0c3708.png

3122e3e320a6940ff94c66488b47d437.png

701aad84159bd9c89fbbc16d8f3d2c83.png

2.新建一个Excel文件,打开可在标签栏显示 ExcelPython标签

7a453e0a8376eff4650625918fabe037.png

3.打开Excel选项——信任中心——信任中心设置——宏设置——安全性,选中“信任对于VBA工程对象模型的访问”,按确定即可。

e0cb9c0262671d8a77cf89bd138c24a1.png

测试安装是否正确

1.将创建的 data.xlsx文件另存为 data.xlsm宏文件。

2.回到Excel,点击 ExcelPython标签的 SetupExcelPython按钮

6b74af89bbb5ec290195cbfcba9b514f.png

3.桌面上会出现一个名为 xlpython的文件夹,以及一个与 *.xlsm文件同名的 *.py文件。

9df824ee279caada114699562ecceb2a.png

4.打开 data.py编辑,写入以下内容

from xlpython import *

import random

@xlfunc

def getRandomBirth():

y = random.randint(1980, 2000)

m = random.randint(1, 12)

d = random.randint(1, 28)

return str(y)+'/'+str(m)+'/'+str(d)

@xlfunc

def getAge(d):

_today = [ 2019, 8, 30 ]

_list = str(d).split('/')

age = _today[0] - int(_list[0])

if _today[1] < int(_list[1]):

age -= 1

elif _today[1] == int(_list[1]):

if _today[2] < int(_list[2]):

age -= 1

else:

pass

else:

pass

return age

da0db0c8c9dc89c4c23d3bf0e8d5a564.png

5.回到Excel中,点击 ExcelPython标签的 ImportPythonUDFs按钮

5e27e2318052d9fa33ff0eb598e3b1f0.png

6.使用Python中定义的函数 在输入框中输入 =getRandomBirth()

ee383c0d242299db4c85b0c2fe9ed10f.png

效果如图

d1f6866de288b8adf89723884dd883a5.png

7.在Excel中使用定义的第二个函数

09c3505347daa556711ce9ea7df2571b.png

效果如图

72733efd4eb0a0916ce1aaa85a8b1c02.png

至此,可以使用Python进行Excel宏的开发。

[https://www.python.org/downloads/windows/]: https://www.python.org/downloads/windows/

[https://sourceforge.net/projects/excelpython/files/]: https://sourceforge.net/projects/excelpython/files/

https://files.cnblogs.com/files/connect/excelpython-2.0.8.zip

原文链接:https://www.cnblogs.com/connect/p/office-excel-python-conf.html

# 文末送书活动 #

活动规则大家请一定要查看,点击这篇推文哦:从今天起,每天至少送大家一本书这篇推文的福利赠书,还是我自己翻译的《Python编程无师自通》(先累计送 3 本),送给本篇文章点赞最多的精选留言者。下一篇推文会换一本,书籍的详细介绍可以点击下面的链接查看。

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「书单02」,立即获取主页君整理的 10 本 Python 入门书的电子版

回复关键词「book 数字」,将数字替换成 0 及以上数字,有惊喜好礼哦~

推荐阅读

  • 你有一份代码审查问题清单,请查收

  • 电子书 | Python 爬虫技术升级必备

  • 深度!Python 解析 XML 数据的正确姿势

  • O'Reilly又出了一本免费的新书!关于深度学习首选这一本

题图:pexels,CC0 授权。

6e2bf82aa3e173e7574380c766e63d7a.png

Published by

风君子

独自遨游何稽首 揭天掀地慰生平