当前位置:首页 >> 编程语言 >> 【python VS vba(系列2)】 python和vba读写EXCEL文件的方式比较 (建设ing),蓝光价格

【python VS vba(系列2)】 python和vba读写EXCEL文件的方式比较 (建设ing),蓝光价格

0evadmin 编程语言 1
文件名:【python VS vba(系列2)】 python和vba读写EXCEL文件的方式比较 (建设ing),蓝光价格 【python VS vba(系列2)】 python和vba读写EXCEL文件的方式比较 (建设ing)

目录

1   用VBA读写EXCEL文件

1.1 用VBA读写,本工作簿workbook里的特定sheet的特定内容

1.1.1 EXCEL表内内容访问

1.1.2 注意点

1.1.3 代码

1.2 用VBA读写本工作簿workbook里的所有sheet的内容

1.2.1 麻烦之处

1.2.2 方法,如何指定EXCEL里的内容范围

1.2.3 写入内容

1.3 尝试用VBA处理非本workbook,且未打开的情况

2 用python 读写EXCEL文件


1   用VBA读写EXCEL文件 1.1 用VBA读写,本工作簿workbook里的特定sheet的特定内容 VBA对单个sheet处理特殊点: 处理本EXCEL文件,因为开着VBE,VBA属于本文件,所以本EXCEL表比然是打开的对应语法用的也是 thisworkbook.worksheets() ,若不指定缺省也会如此默认

1.1.1 EXCEL表内内容访问 具体到内部,因为EXCEL天生是表格,是数组,是2维数组等需要使用下面这些对象的层级 sheet.cells()sheet.range()sheet.rows() 。。。

1.1.2 注意点 注意用于保存workbook, worksheet的变量 必须先定义为对象且用set赋值 比如   Dim path1 As Object (或者worksheet) Set path1 = ThisWorkbook.Worksheets("now")

1.1.3 代码 'VBA对单个sheet处理'特殊点:处理本EXCEL文件,因为开着VBE,VBA属于本文件,所以本EXCEL表比然是打开的Sub print2001()Dim path1 As ObjectSet path1 = ThisWorkbook.Worksheets("now")'读指定sheet里特定内容Debug.Print path1.Cells(1, 1)'往wb的指定sheet写入内容'查下path1当前最大行maxr = path1.Cells(9999, 1).End(xlUp).Rowpath1.Cells(maxr + 1, 1) = 100path1.Cells(maxr + 1, 2) = 101path1.Cells(maxr + 1, 3) = 102path1.Cells(maxr + 1, 4) = 103End Sub

1.2 用VBA读写本工作簿workbook里的所有sheet的内容 目标是遍历这个,整个thisworkbook里面的内容'注意VBA里数组语法的 1 to 4 和1,4完全不同,后者是2维数组

1.2.1 麻烦之处 '处理EXCEL的内容会比一般文件麻烦,因为EXCEL天生是表格,是数组,是2维数组等'VBA处理一个wb里的多个sheet处理,同样使用循环 注意正确的是 for sheet in workbook.worksheets注意是 for sheet in workbook.worksheet  或 for sheet in workbook是错误的

1.2.2 方法,如何指定EXCEL里的内容范围 1 指定要读写的范围边界,写入数组,然后操作数组2 使用 sheet.usedrange() 作为数组的数据源

1.2.3 写入内容 遍历 sheet,然后写入即可 '注意VBA里数组的1to4 和1,4完全不同,后者是2维数组'VBA处理一个wb里的多个sheet处理Sub print2002()Dim path1 As ObjectDim wb As ObjectDim sht As ObjectFor Each sht In ThisWorkbook.WorksheetsDebug.Print "sheetName=" & sht.Namemaxr = sht.Cells(9999, 1).End(xlUp).Rowmaxl = sht.Cells(1, 9999).End(xlToLeft).ColumnDebug.Print "现有内容的最大行数=" & maxrDebug.Print "现有内容的最大列数=" & maxl'因为表很大,数据散布在全表的不同格子里,尝查找限定范围内的内容'显示指定区域的内容arr1 = sht.Range("a1:d10")For i = LBound(arr1, 1) To UBound(arr1, 1)For j = LBound(arr1, 2) To UBound(arr1, 2)Debug.Print arr1(i, j),NextDebug.PrintNext'显示表里用过的内容arr2 = sht.UsedRangeFor i = LBound(arr2, 1) To UBound(arr2, 1)For j = LBound(arr2, 2) To UBound(arr2, 2)Debug.Print arr2(i, j),NextDebug.PrintNextNext'这里写入'往wb的指定sheet写入内容,还是先只追加1行'查下path1当前最大行For Each sht In ThisWorkbook.WorksheetsFor k = 1 To 4sht.Cells(maxr + 1, k) = 99 * kNextNextEnd Sub

1.3 尝试用VBA处理非本workbook,且未打开的情况

2 用python 读写EXCEL文件

需要加载专门的模块---也就是前人造好的轮子,比如这2个:

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接