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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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”的问题。

参考技术A

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

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

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

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

参考技术B “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”
参考技术C 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
参考技术D 有两种方案

使用COM库,例如ExcelPython
使用内置解释器,例如Pyinex, PyXLL

EXCEL VBA 求助

如下代码,从另一个EXCEL表格中复制后运行没问题,
但是从邮件的表格中复制后再运行,报错“Range 的 PasteSpecial 方法无效”
请问如何达到从EXCEL表格、邮件表格中复制后都没问题?

Sub Macro2()
'
' Macro2 Macro
'
' 快捷键: Ctrl+q
'
Sheets("sheet1").Select
Range("A1").Select
Range("A1").PasteSpecial Paste:=xlPasteValues
End Sub

参考技术A

    你的VBA代码没问题

    不能满足你的要求,因为只有你从EXCEL复制的表格数据的时候才会跳出你想要的那个选择性粘贴的窗口,你的语句才有效(大多数情况也是这样的),如果你从网页、word等其他地方复制后到excel粘贴(或者从EXCEL中复制图片、图形等非表格对象),跳出的选择性粘贴窗口将不是那个窗口,你的代码也是无效的,这很正常,你的要求不现实。

    不过你可以先把文本粘贴到EXCEL后再复制然后再选择性粘贴还是可以的(仅限于文字数据等,图片无效)

    的代码换成selectiong.pastespecial paste:=xlpastevalues更实用一些,可以往你选中的单元格粘贴成数值,否则只能往A1粘

参考技术B 提示那句错误呢?追问

Range("A1").PasteSpecial Paste:=xlPasteValues

追答

换成这句试试
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

追问

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
还是报错

SORRY 无 QQ

追答

额额。

本回答被提问者采纳

以上是关于excel中想实现使用Python代替VBA,请问应该怎么做的主要内容,如果未能解决你的问题,请参考以下文章

请问Excel 里面的 VBA 具体能做啥?都有哪些实际的用途?

Excel 请问如何破解VBA工程不可查看

excel VBA 组合框 取值

有没可以将Excel数据自动填写到表单的软件?

请问用vba在excel表里指定内容转成文本一键自动发到指定的微信群上?求帮忙!

求助!请教VBA高手! 有没有哪位高手有编制过调用翻译软件实现在excel中,英文译成中文的?