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虚拟机解释器及运行过程

    python虚拟机解释器及运行过程

    这篇文章主要为大家介绍了python虚拟机解释器及运行过程的介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Python用Jira库来操作Jira

    Python用Jira库来操作Jira

    这篇文章主要介绍了Python如何用Jira库来操作Jira,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • educoder之Python数值计算库Numpy图像处理详解

    educoder之Python数值计算库Numpy图像处理详解

    这篇文章主要为大家介绍了educoder之Python数值计算库Numpy图像处理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • python实现简易通讯录修改版

    python实现简易通讯录修改版

    这篇文章主要为大家详细介绍了python实现简易通讯录的修改版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • python新一代网络请求库之python-httpx库操作指南

    python新一代网络请求库之python-httpx库操作指南

    Python 的 httpx 包是一个用于 HTTP 交互的一个优秀且灵活的模块,下面这篇文章主要给大家介绍了关于python新一代网络请求库之python-httpx库的相关资料,需要的朋友可以参考下
    2022-09-09
  • Python中py文件引用另一个py文件变量的方法

    Python中py文件引用另一个py文件变量的方法

    下面小编就为大家分享一篇Python中py文件引用另一个py文件变量的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python如何使用socketserver模块实现并发聊天

    python如何使用socketserver模块实现并发聊天

    这篇文章主要介绍了python如何使用socketserver模块实现并发聊天,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • python 处理dataframe中的时间字段方法

    python 处理dataframe中的时间字段方法

    下面小编就为大家分享一篇python 处理dataframe中的时间字段方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • pytorch tensorboard可视化的使用详解

    pytorch tensorboard可视化的使用详解

    tensorboard是tensorflow用来可视化训练和测试过程的模块,而pytorch并没有可视化模块,但是pytoch=1.2.0版本以上开始支持tensorboard
    2022-10-10
  • OpenCV Python身份证信息识别过程详解

    OpenCV Python身份证信息识别过程详解

    本篇文章使用OpenCV-Python和CnOcr来实现身份证信息识别的案例,本篇文章使用的Python版本为3.6,OpenCV-Python版本为3.4.1.15,如果是4.x版本的同学,可能会有一些Api操作不同,下面跟随小编看下OpenCV Python身份证信息识别过程
    2022-04-04

最新评论