excel中想实现使用Python代替VBA,请问应该怎么做

如题所述

excel中想实现使用Python代替VBA的具体步骤如下:

1、在python官网,下载安装文件,使用2.7版本。

2、使用pip安装xlwings。pip是python自带自动安装软件,打开命令行,输入:pip install xlwings,会自动检查当前机器是否具备相关环境,然后自动去下载安装相关软件。

3、在命令行输入python,进入python编程环境。输入:import xlwings as xw,测试是否已经成功安装。(注意:输入xw.__path__可查看安装目录)

4、利用xlwings操控一个空白的excel表单,可以查看xlwings的文档,可以通过百度xlwings,找到doc.xlwings.org。

5、利用xlwings替代VBA写宏,操控excel。将xlwings.bas导入到excel中,Alt+F11进入源码界面,xlwings.bas在xlwings的安装目录下可找到。

6、在与excel文件同目录下新建一个python脚本文件tt.py,编写自己的脚本。

7、在excel文件的代码界面将其导入,编写代码,点击执行。

8、在excel界面选择宏去执行,这样就完成python脚本替代VBA的动作。

这样就解决了“excel中想实现使用Python代替VBA”的问题。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-29

1、首先需要打开excel软件,然后利用xlwings替代VBA写宏。

2、按快捷键z弹出对话,导入xlwings文件。

3、然后在与excel文件同目录下新建一个python脚本文件,如图所示的代码进行编写。

4、最后,再返回到excel里面,再导入如图所示,可以看到加载宏为VBA,点击运行即可完成操作。

本回答被网友采纳
第2个回答  推荐于2018-02-10
“python(或者其他什么语言)操作excel”文件,按是否依赖Excel,可以分为两类。

第一类,excel文件只是用来存储数据,python对它的操作只是读和写。这种时候,对文件的操作不需要依赖Excel,你的机器上没有excel也能执行。在这种场景下,csv,txt等Excel支持的文本文件格式,都是很好的选择。这种情况,所谓的"python读写excel文件",实际上就是python读写文本文件,无非是这个文本文件是有一定格式的,找个csv的类库处理能事半功倍。如果csv/txt太过简单,文件内需要多个worksheet,那么可以保存为xls/xlsx格式,对应的读写操作用楼上提到的xlrd和openpyxl。

第二类,对文件的操作不止读写数据,包含更多的其他操作,比如插入行列,设置字体颜色,等待。这时候文件格式必然是excel only的格式(xls*)。对应的操作,其实最基础的,是通过COM调用Excel的API,实际上VBA调用的也是这个东西。python,以及其他很多语言,都是支持COM的,在脚本里面获取到了Excel.Application,就可以像在VBA里面一样写Application.Workbooks(1).Worksheet(1)了。下面sample是ruby写的,python应该也差不多。

#引用COM
require "win32ole"

#连接一个已经打开的Excel
xlApp = WIN32OLE.connect("Excel.Application")

#接下去就和VBA的写法没什么两样了
wb = xlApp.activeWorkbook #获取当前激活的workbook
ws = wb.worksheets(1) #获取第一个worksheet
ws.range('A1').value = "hello" #在sheet1的A1写入“hello”本回答被网友采纳
第3个回答  2017-09-22
python(或者其语言)操作excel文件按否依赖Excel两类

第类excel文件用存储数据python操作读写种候文件操作需要依赖Excel机器没excel能执行种场景csvtxt等Excel支持文本文件格式都选择种情况所谓"python读写excel文件"实际python读写文本文件非文本文件定格式找csv类库处理能事半功倍csv/txt太简单文件内需要worksheet保存xls/xlsx格式应读写操作用楼提xlrdopenpyxl

第二类文件操作止读写数据包含更其操作比插入行列设置字体颜色等待候文件格式必excel only格式(xls*)应操作其实基础通COM调用ExcelAPI实际VBA调用东西python及其语言都支持COM脚本面获取Excel.Application像VBA面写Application.Workbooks(1).Worksheet(1)面sampleruby写python应该差

#引用COM
require "win32ole"

#连接已经打Excel
xlApp = WIN32OLE.connect("Excel.Application")

#接VBA写没两
wb = xlApp.activeWorkbook #获取前激workbook
ws = wb.worksheets(1) #获取第worksheet
ws.range('A1').value = "hello" #sheet1A1写入hello
第4个回答  2018-07-31
有两种方案

使用COM库,例如ExcelPython
使用内置解释器,例如Pyinex, PyXLL本回答被网友采纳
相似回答