Excel宏编程可以快速完成批量表格操作:复制粘贴、数据过滤等,宏代码基于VB语言实现,有基础的编程经验就能快速阅读。下面是我的学习笔记。

1. Excel VBA编辑界面

(进入路径: sheet名称 --> 鼠标右键菜单 --> 查看代码)

2. 输入代码方法:

在VBE编辑器的代码模块中输入VBA代码,通常有以下几种方法:

■ 手工键盘输入;

■ 使用宏录制器,即选择菜单“工具——宏——录制新宏”命令,将所进行的操作自动录制成宏代码;

■ 复制/粘贴代码,即将现有的代码复制后,粘贴到相应的代码模块中;

■ 导入代码模块:文件-->导入文件 **不用的模块可以:文件-->移出模块

3. VB代码阅读扫盲

(1) 模块声明:

Sub sName() ... End Sub
Sub xxxxx()
XXXXXXXXX
End Sub

(2) 变量声明:

Dim sPara As sType
Dim para1, para2, para3
Dim para4 As workbook, para5 As String
Dim G As Long

(3) 选择结构:

With ... End With
If condition Then ... End If# 举个例子:遍历每个Sheet把表粘贴成一个大表的语句,使用For Next With End With语句With Workbooks(1).ActiveSheet
For G = 1 To Sheets.Count
Wb.Sheets(G).UsedRange.Copy       .Cells(.Range("B65536").End(xlUp).Row + 1, 1)
Next
WbN = WbN & Chr(13) & Wb.Name
Wb.Close False
End With

(4) 循环结构

Do While condition ... Loop
For i = 0 to 100 ... Next

(5) 输出Log:

MsgBox sString

案例解析:解析拷贝路径下所有Excel到一个工作表下的示例:

************************************************************************************************************************************

Sub 合并当前目录下所有工作簿的全部工作表()  #模块名称
Dim MyPath, MyName, AWbName         #变量声明
Dim Wb As workbook, WbN As String
Dim G As Long
Dim Num As Long
Dim BOX As String
Application.ScreenUpdating = False         #停止屏幕刷新
MyPath = ActiveWorkbook.Path               #获取当前工作文件路径
MyName = Dir(MyPath & "\" & "*.xls")       #获取当前文件名(截取字符串)
AWbName = ActiveWorkbook.Name          #获取当前BookName
Num = 0                                #准备进入循环处理
Do While MyName <> ""                   #第一个循环体:遍历所有文件 终止条件是 文件名为空
If MyName <> AWbName Then             #条件:文件名当前激活文件不同
Set Wb = Workbooks.Open(MyPath & "\" & MyName)       # 设置工作表的名称(当前Sheet Name)
Num = Num + 1                     #计数用于输出
With Workbooks(1).ActiveSheet
.Cells(.Range("B65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)
#赋值语句:激活Sheet的A列最后一个单元格赋值为MyName去掉‘.xls’的部分
#Left 截取字符串 去掉了'.xls'
#workbooks(n) 为取工作簿 的写法
#A65535(一个极大数)单元格向上,最后一个非空的单元格的行号
For G = 1 To Sheets.Count                  #嵌套循环体:遍历文件的所有Sheets
Wb.Sheets(G).UsedRange.Copy .Cells(.Range("B65536").End(xlUp).Row + 1, 1)    #赋值所有内容到以结束内容空一行开始的表格中
Next                                    #且套循环体结束
WbN = WbN & Chr(13) & Wb.Name          # & 为合并字符串的符号
Wb.Close False                          #对于文件操作结束,关闭Excel文件
End With                                #退出第二个判断
End If                              #退出第一个判断
MyName = Dir                           #怎么拿到第二个bookName
Loop                                    #循环体结束
Range("B1").Select                        #选中B1
Application.ScreenUpdating = True          #允许Excel屏幕刷新
MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"
End Sub

************************************************************************************************************************************

常用模块:

1. 把一个workBook的一块表格拷贝到另一个WorkBook中的一般化方法:

上面的代码中是一种简单的实现:拷贝所有内容到空行区域

需要将拷贝的内容和粘贴的位置控制更加精准控制:

拷贝指定位置到指定位置:

Workbooks("工作簿1.xls").Sheet1.Range("A1:C50").Copy ThisWorkbook.Sheet2.Range("A1")

2. 找到粘贴位置:

b=sheet2.[BI].end(xlToLeft).row+1 获取最后一次编辑的各自的列号!.Range("B65536").End(xlUp).Row + 2 最后一次编辑的格子的行号

A1 直接编辑

.Cells(nRowNo, nColNo)

...

实战案例分析:一个将多个相同格式表格合并生成横表的例子:

Sub 合并当前目录下所有工作簿的全部工作表()Dim MyPath, MyName, AWbName
Dim Wb As Workbook, WbN As String
Dim G As Long
Dim Num As Long
Dim BOX As String
Dim HasTitil As Boolean
Dim LastRange As String
Dim CurRowNo As LongApplication.ScreenUpdating = False
MyPath = ActiveWorkbook.Path
MyName = Dir(MyPath & "\" & "*.xls")
AWbName = ActiveWorkbook.Name
Num = 0
HasTitil = FalseWith Workbooks(1).ActiveSheet
.Cells(1, 2) = "Cor.Name"
Do While MyName <> ""
If MyName <> AWbName Then
Set Wb = Workbooks.Open(MyPath & "\" & MyName)
Num = Num + 1
.Cells(1, Num + 2) = Left(MyName, Len(MyName) - 4)If HasTitil <> True ThenWb.Sheets(1).Range("A4:B43").Copy .Cells(2, 1)
Wb.Sheets(1).Range("E4:F43").Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1)
Wb.Sheets(2).Range("A5:B73").Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1)
Wb.Sheets(2).Range("E5:F73").Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1)
Wb.Sheets(3).Range("A4:B32").Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1)
Wb.Sheets(3).Range("E4:F32").Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1)
Wb.Sheets(4).Range("A5:B100").Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1)HasTitil = True
End IfCurRowNo = 2
Wb.Sheets(1).Range("D4:D43").Copy .Cells(CurRowNo, Num + 2)
CurRowNo = CurRowNo + 40
Wb.Sheets(1).Range("H4:H43").Copy .Cells(CurRowNo, Num + 2)
CurRowNo = CurRowNo + 40
Wb.Sheets(2).Range("D5:D73").Copy .Cells(CurRowNo, Num + 2)
CurRowNo = CurRowNo + 69
Wb.Sheets(2).Range("H5:H73").Copy .Cells(CurRowNo, Num + 2)
CurRowNo = CurRowNo + 69
Wb.Sheets(3).Range("D4:D32").Copy .Cells(CurRowNo, Num + 2)
CurRowNo = CurRowNo + 29
Wb.Sheets(3).Range("H4:H32").Copy .Cells(CurRowNo, Num + 2)
CurRowNo = CurRowNo + 29
Wb.Sheets(4).Range("D5:D100").Copy .Cells(CurRowNo, Num + 2)Wb.Close False
End If
MyName = Dir
LoopEnd WithRange("B1").Select
Application.ScreenUpdating = True
End Sub

一小时搞定 简单VBA编程 Excel宏编程快速扫盲相关推荐

  1. python做excel麻烦_高效办公必备:别人通宵做的 Excel,我用Python 半小时搞定!

    原标题:高效办公必备:别人通宵做的 Excel,我用Python 半小时搞定! 最近经常听到周围的人抱怨:"工作忙,在加班--" 不知不觉,当代职场人早就被"996&qu ...

  2. bootstraptable导出excel独立使用_JavaWeb系列之-一小时搞定POI导出Excel

    课程简介: 课程目标:通过本视频,可以在一小时之内快速实现使用Apache POI组件导出excel,您是不是项目中用到这个功能了,是不是懒得从网上查代码改代码呢?这个简短的小视频适合您. 适用人群: ...

  3. 微服务系列 —— 一小时搞定Eureka

    微服务系列  -- 一小时搞定Eureka 一.什么是Eureka Eureka是Netflix公司开源的产品,它是一种基于REST( Representational State Transfer  ...

  4. 一小时搞定计算机网络面试

    一小时搞定计算机网络面试 一.计算机网络体系结构参考模型: 七层协议的作用: 1.物理层:主要定义物理设备标准,如网线的接口类型.光纤的接口类型.各种传输介 质的传输速率等.它的主要作用是传输比特流( ...

  5. 两小时搞定负载均衡51CTO技术沙龙现场视频2

    田逸田老师幽默风趣的案例讲解 7月5日下午,51CTO技术社区主办的"两小时搞定负载均衡 全真实战案例解析"活动圆满结束.参加沙龙的100多位用户和嘉宾相聚近三个小时,生动的课程. ...

  6. 【面试锦囊】14种模式搞定面试算法编程题(8-14)

    面试锦囊之知识整理系列 面试锦囊系列一直有收到大家的反馈,包括后台内推成功的消息.朋友的同事从创业小公司成功跳到huawei等等,非常高兴小破号的这些整理分享能够真正地帮助到大家,以后也会继续.为了更 ...

  7. python课件_如何20小时搞定Python量化期权实战?

    <Python量化期权实战应用>课程,在预售初期就备受关注,课程开始上线以来,内容更是受到了广大学员的一致好评. 眼看着课程就快要更新完毕了,如果还没有开始学习的同学要抓紧时间了. 课程总 ...

  8. Python自动化(十二):一分钟搞定几百个Excel中查找的数据

    一.需求说明 首先我们来看下今天的需求,有一份档案记录总表的Excel工作簿, 每天会根据当天日期建立新表,每天的表格内包含所有档案信息,同时也有可能会添加新的档案名.同个年度的总表在年末可能会有两. ...

  9. python量化期权_如何20小时搞定Python量化期权实战?

    <Python量化期权实战应用>课程,在预售初期就备受关注,课程开始上线以来,内容更是受到了广大学员的一致好评. 眼看着课程就快要更新完毕了,如果还没有开始学习的同学要抓紧时间了. 课程总 ...

  10. (素材源代码)猫猫学IOS(四)UI之半小时搞定Tom猫

    下载地址:http://download.csdn.net/detail/u013357243/8514915 以下是执行图片展示 制作思路以及代码解析 猫猫学IOS(四)UI之半小时搞定Tom猫这里 ...

最新文章

  1. Jsp实现网上定餐系统
  2. golang单向散列函数
  3. Python 知识点全解析系列之列表推导式(list comprehension)
  4. 安装 | Anaconda3下载链接
  5. cannot import caffe
  6. [图] DevOps:提速从研发到交付流程
  7. P4016 负载平衡问题
  8. 在JavaScript中以Hours24:Minutes:Seconds格式获取当前时间
  9. [深度学习-实践]BP神经网络的Helloworld(手写体识别和Fashion_mnist)
  10. c 程序设计语言第1 3部分,《C程序设计语言(第2版新版)典藏版》 —1.3 for语句...
  11. 局域网内搭建Android SDK更新源
  12. 解决添加打印机print spooler打印服务自动关闭故障
  13. Eureka是干什么的?
  14. 使用rufus制作windows系统安装u盘
  15. 云计算会不会被边缘计算取而代之
  16. DAY11:尚学堂高琪JAVA(116~118)
  17. Datawhale组队学习周报(第026周)
  18. 基于QT的英文文献的编辑与检索系统的实现
  19. 2021 长安杯 Re
  20. 洛谷P5601-小D与笔试(字符串处理)

热门文章

  1. 记录一下Mac浏览器劫持searchbaron.com的经历
  2. linux中的计划任务
  3. 病房呼叫系统数电设计(含报告)
  4. 《像混球那样思考和行动》
  5. c语言英文背单词软件下载,英语背单词软件
  6. 金蝶K3 webservice接口
  7. 如何阅读源码,阅读源码的难点和方法分析
  8. 射频测试系统软件,射频测试可以不懂测试仪器?“仪器程控系统”软件助你极大提升测试效率...
  9. 高德地图行政区域划分(西安)
  10. JavaScript锅打灰太狼游戏