python兼容VBA的用法详解

 更新时间:2021年09月11日 08:57:04   作者:xue_11  
这篇文章主要介绍了python兼容VBA的用法详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

一、简介

有时我们需要向含有VBA代码的Excel写入数据,但又不能影响正常的VBA代码执行,起初我使用python的openpyxl模块中函数将数据写入xlsm文件中,写入数据后发现执行VBA代码的按钮消失不见了,于是通过查找原因发现是由于openpyxl对VBA支持并不友好,而对VBA支持友好是xlwings模块。

二、简单介绍下xlwings模块

在这里插入图片描述

1、读取Excel中数据

读取需注意点:
默认情况下,带有数字的单元格被读取为float,带有日期单元格被读取为datetime.datetime,空单元格转化为None;数据读取可以通过option操作指定格式读取。

import xlwings as xw
import os

#创建APP应用
app=xw.App(visible=True,add_book=False)    #visible表示程序运行时是否可见Excel,True表示可见,False表示不可见;add_book表示是否要新建工作簿
file = "数据写入V1.xlsm"
wb=app.books.open(file)                    #打开指定文件


ws = wb.sheets["Sheet1"]                   #工作表引用
#ws.activate()
temp_value = ws["B2"].value                #默认读取B2的值,为浮点型
print(type(temp_value))
print(temp_value)

temp_n = ws["B3"].value                    #默认读取B3的值,这里未空值默认应显示None
print(type(temp_n))
print(temp_n)

temp_value1 = ws["B2"].options(numbers=int).value   #将B2的设置为整数
print(type(temp_value1))
print(temp_value1)

#运行结果

<class 'float'>

100.0

<class 'NoneType'>

None

<class 'int'>

100

>>> 

2、另一种取值单元格值得方式

import xlwings as xw
import os

app=xw.App(visible=True,add_book=False)                
file = "数据写入V1.xlsm"
wb=app.books.open(file)                      #打开指定文件
ws = wb.sheets["Sheet1"]
print(ws.range('B2').value)                  #另一种方式读取B2的值
#运行结果
100.0

三、将数据写入Excel

在这里插入图片描述

import xlwings as xw
import os

#创建APP应用
app=xw.App(visible=True,add_book=False)                
file = "数据写入V1.xlsm"
wb=app.books.open(file)                      #打开指定文件

#工作表引用
ws = wb.sheets["Sheet1"]
a = 6799
b = 2345
c = 1000
info = ws.used_range
#print(info)
nrows = info.last_cell.row             #获取sheet表中最大行
print(nrows)
if ws['B'+str(nrows)]==None:
    ws['B'+str(int(nrows)-1)].value=a
    ws['C'+str(int(nrows)-1)].value=b
    ws['D'+str(int(nrows)-1)].value=c
else:
    ws['B'+str(int(nrows)+1)].value=a
    ws['C'+str(int(nrows)+1)].value=b
    ws['D'+str(int(nrows)+1)].value=c
    
wb.save()                  #保存数据
wb.close()                 #关闭工作簿
app.quit()                

写入后

在这里插入图片描述

到此这篇关于python兼容VBA的用法详解的文章就介绍到这了,更多相关python兼容VBA的用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 为python设置socket代理的方法

    为python设置socket代理的方法

    这篇文章主要介绍了为python设置socket代理的方法,需要的朋友可以参考下
    2015-01-01
  • Python使用pymupdf实现PDF加密

    Python使用pymupdf实现PDF加密

    这篇文章主要介绍了如何使用 Python 和 wxPython 库创建一个简单的图形用户界面(GUI)应用程序,用于对 PDF 文件进行加密,感兴趣的小伙伴可以了解下
    2023-08-08
  • 基于python实现分析识别文章/内容中的高频词和关键词

    基于python实现分析识别文章/内容中的高频词和关键词

    要分析一篇文章的高频词和关键词,可以使用 Python 中的 nltk 库和 collections 库或者jieba库来实现,本篇文章介绍基于两种库分别实现分析内容中的高频词和关键词,需要的朋友可以参考下
    2023-09-09
  • Python实现App自动签到领取积分功能

    Python实现App自动签到领取积分功能

    这篇文章主要介绍了Python实现App自动签到领取积分功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • 基于Python实现船舶的MMSI的获取(推荐)

    基于Python实现船舶的MMSI的获取(推荐)

    工作中遇到一个需求,需要通过网站查询船舶名称得到MMSI码,网站来自船讯网。这篇文章主要介绍了基于Python实现船舶的MMSI的获取,需要的朋友可以参考下
    2019-10-10
  • python中numpy的矩阵、多维数组的用法

    python中numpy的矩阵、多维数组的用法

    本篇文章主要介绍了python中numpy的矩阵、多维数组的用法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Python中GIL全局解释锁的实现

    Python中GIL全局解释锁的实现

    本文主要介绍了Python中GIL全局解释锁的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Python实现疫情通定时自动填写功能(附代码)

    Python实现疫情通定时自动填写功能(附代码)

    这篇文章主要介绍了Python实现疫情通定时自动填写功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • python创建n行m列数组示例

    python创建n行m列数组示例

    今天小编就为大家分享一篇python创建n行m列数组示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python实现简单温度转换的方法

    python实现简单温度转换的方法

    这篇文章主要介绍了python实现简单温度转换的方法,涉及Python操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03

最新评论