VBA合并工作簿

VBA合并工作簿-一鱼
WPS VBA插件
压缩包文件依次安装
10积分
付费资源

什么是VBA,它有什么作用

VBA是一种编程语言,是VB语言的分支

A 实现Excel中没有提供的功能

B 提高运行速度

C 编写自定义函数

D 实现自动化功能

F 通过插入窗体做小型管理软件

前提准备

  • 调出开发工具
图片[1]-VBA合并工作簿-一鱼
  • 启用所有的宏
图片[2]-VBA合并工作簿-一鱼
  • 如何进入VBA编写界面

快捷键:ALT+F11

开发工具——Visual Basic

图片[3]-VBA合并工作簿-一鱼
  • 工作表——鼠标右键——查看代码
图片[4]-VBA合并工作簿-一鱼

编写格式

1. 框架

图片[5]-VBA合并工作簿-一鱼
  • 运行:快捷键:F5
  • 如何保存代码:启用宏的工作簿(后缀名xlsm)
图片[6]-VBA合并工作簿-一鱼

录制宏

图片[7]-VBA合并工作簿-一鱼

什么是变量?

  • 什么是变量

变量是一个自定义名称的储存单位,变量是一个载体

  • 为什么要使用变量

简化输入,储存不确定的数据

  • 变量的数据类型
3.1 变量的数据类型
数据类型储存空间范围简写
byte1个字节0到255 
Integer2个字节-32768到32767%
Long4个字节-2147483648到2147483647&
String10个字节加字符串长度0到大约20亿$
Date8个字节100年1月1日到9999年12月31日 
Variant16个字节或22个字节变体型 
    
    
3.2声明变量的数据类型
声明的格式:dim 变量名 as 数据类型
                     dim n as interger
          简写:dim n%
    
声明多个变量用逗号隔开:Dim s&, n%, x% 
 
3.3为什么要声明变量?
提升效率
    
  • 常见对象的表达方法
对象的表达方法 
excel有数百个对象,我们先记住一些常用对象 
工作簿、工作表、单元格 
  
Workbooks (“工作簿名”) 
ActiveWorkbook 活动工作簿 
ThisWorkBook ‘代码所在工作簿 
  
Sheets(n) 第n个工作表按工作表的顺序
Sheetn 第n个工作表按系统工作表名
Sheets(“工作表名”)按工作表名称
ActiveSheet 活动工作表 
  
Range (“单元格地址”)一个单元格,一行,一列,一个区域
Cells(行,列) 
[A1]单元格简写 
Activecell 活动单元格 
Selection 选择的区域

获取VBA功能

一、Excel的VBA功能

  • 集成方式:Excel直接集成了VBA功能,用户无需额外安装即可使用。
  • 功能特点:VBA是一种在Excel中广泛使用的宏语言,允许用户编写代码来自动执行一系列任务,如数据处理、格式设置等,从而提高工作效率。
  • 使用方式:用户可以通过切换到“开发工具”选项卡并点击“Visual Basic”来打开VBA界面,进行代码的编写和调试。

二、WPS的VBA功能获取方式

使用方式:安装VBA插件或购买商业版后,用户可以在WPS的开发工具界面中看到“VB编辑器”选项,点击即可进入VBA界面进行代码的编写和调试。

默认状态:WPS默认不集成VBA功能,因此在WPS的开发工具界面中,“VB编辑器”通常是灰色的,表明VBA功能不可用。

获取方式

安装VBA插件:用户可以从WPS官方网站或可靠的第三方来源下载VBA插件的安装包,并按照屏幕上的提示进行安装。安装完成后,需要重新启动WPS Office,此时VBA功能应该已经可用。

购买WPS商业版:WPS商业版已经内置了VBA功能,用户可以直接购买商业版来使用VBA功能。

合并工作簿

  • 合并工作簿AI
Sub 合并工作簿AI()
Dim ss$, mx As Worksheet, wb As Workbook, h%, z As Range, gzb '定义变量
t = Timer '把当前代码的时间赋值给t,t没有声明变量,默认变体型,也就是它可以存储任何类型的信息
Cells.Clear '清除数据
gzb = 0
Application.ScreenUpdating = False '关闭屏幕刷新
Set mx = ThisWorkbook.ActiveSheet '赋值当前工作表
ss = Dir(ThisWorkbook.Path & "\") '赋值工作簿路径
Do 'DO loop中间的代吗就是要循环的语句
    If ss <> ThisWorkbook.Name Then
        Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & ss)
        If ThisWorkbook.Sheets(1).[a1] = "" Then
            wb.Sheets(1).Cells.Copy ThisWorkbook.Sheets(1).[a1]
        Else
            wb.Sheets(1).Range("a1").CurrentRegion.Offset(1, 0).Copy z
        End If
        Application.DisplayAlerts = False '警告窗口默认不保存
        wb.Close
        Application.DisplayAlerts = True '提示功能打开
    End If
    gzb = gzb + 1
    h = Range("a1").CurrentRegion.Rows.Count
    Set z = Cells(h + 1, 1)
    ss = Dir '(*返回同一个目录的下一个文件*)
Loop Until ss = "" 'DO loop中间的代吗就是要循环的语句
mx.Columns.AutoFit '自动调整合并工作表的列宽
Rows("1:1").Select
Selection.AutoFilter
Application.ScreenUpdating = True '打开屏幕刷新
MsgBox "合并" & gzb & "张工作表格用时" & Timer - t & "秒" '弹窗显示统计时间
End Sub
  • 合并工作簿AO
Sub 合并工作簿AO()
Dim ss$, mx As Worksheet, wb As Workbook, h%, z As Range, gzb '定义变量
t = Timer '把当前代码的时间赋值给t,t没有声明变量,默认变体型,也就是它可以存储任何类型的信息
Cells.Clear '清除数据
gzb = 0
Application.ScreenUpdating = False '关闭屏幕刷新
Set mx = ThisWorkbook.ActiveSheet '赋值当前工作表
ss = Dir(ThisWorkbook.Path & "\") '赋值工作簿路径
Do 'DO loop中间的代吗就是要循环的语句
    If ss <> ThisWorkbook.Name Then
        Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & ss)
        If ThisWorkbook.Sheets(2).[a1] = "" Then
            wb.Sheets(2).Cells.Copy ThisWorkbook.Sheets(2).[a1]
        Else
            wb.Sheets(2).Range("a1").CurrentRegion.Offset(1, 0).Copy z
        End If
        Application.DisplayAlerts = False '警告窗口默认不保存
        wb.Close
        Application.DisplayAlerts = True '提示功能打开
    End If
    gzb = gzb + 1
    h = Range("a1").CurrentRegion.Rows.Count
    Set z = Cells(h + 1, 1)
    ss = Dir '(*返回同一个目录的下一个文件*)
Loop Until ss = "" 'DO loop中间的代吗就是要循环的语句
mx.Columns.AutoFit '自动调整合并工作表的列宽
Rows("1:1").Select
Selection.AutoFilter
Application.ScreenUpdating = True '打开屏幕刷新
MsgBox "合并" & gzb & "张工作表格用时" & Timer - t & "秒" '弹窗显示统计时间
End Sub
  • 合并工作簿DI
Sub 合并工作簿DI()
Dim ss$, mx As Worksheet, wb As Workbook, h%, z As Range, gzb '定义变量
t = Timer '把当前代码的时间赋值给t,t没有声明变量,默认变体型,也就是它可以存储任何类型的信息
Cells.Clear '清除数据
gzb = 0
Application.ScreenUpdating = False '关闭屏幕刷新
Set mx = ThisWorkbook.ActiveSheet '赋值当前工作表
ss = Dir(ThisWorkbook.Path & "\") '赋值工作簿路径
Do 'DO loop中间的代吗就是要循环的语句
    If ss <> ThisWorkbook.Name Then
        Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & ss)
        If ThisWorkbook.Sheets(3).[a1] = "" Then
            wb.Sheets(3).Cells.Copy ThisWorkbook.Sheets(3).[a1]
        Else
            wb.Sheets(3).Range("a1").CurrentRegion.Offset(1, 0).Copy z
        End If
        Application.DisplayAlerts = False '警告窗口默认不保存
        wb.Close
        Application.DisplayAlerts = True '提示功能打开
    End If
    gzb = gzb + 1
    h = Range("a1").CurrentRegion.Rows.Count
    Set z = Cells(h + 1, 1)
    ss = Dir '(*返回同一个目录的下一个文件*)
Loop Until ss = "" 'DO loop中间的代吗就是要循环的语句
mx.Columns.AutoFit '自动调整合并工作表的列宽
Rows("1:1").Select
Selection.AutoFilter
Application.ScreenUpdating = True '打开屏幕刷新
MsgBox "合并" & gzb & "张工作表格用时" & Timer - t & "秒" '弹窗显示统计时间
End Sub
  • 合并工作簿DO
Sub 合并工作簿DO()
Dim ss$, mx As Worksheet, wb As Workbook, h%, z As Range, gzb '定义变量
t = Timer '把当前代码的时间赋值给t,t没有声明变量,默认变体型,也就是它可以存储任何类型的信息
Cells.Clear '清除数据
gzb = 0
Application.ScreenUpdating = False '关闭屏幕刷新
Set mx = ThisWorkbook.ActiveSheet '赋值当前工作表
ss = Dir(ThisWorkbook.Path & "\") '赋值工作簿路径
Do 'DO loop中间的代吗就是要循环的语句
    If ss <> ThisWorkbook.Name Then
        Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & ss)
        If ThisWorkbook.Sheets(4).[a1] = "" Then
            wb.Sheets(4).Cells.Copy ThisWorkbook.Sheets(4).[a1]
        Else
            wb.Sheets(4).Range("a1").CurrentRegion.Offset(1, 0).Copy z
        End If
        Application.DisplayAlerts = False '警告窗口默认不保存
        wb.Close
        Application.DisplayAlerts = True '提示功能打开
    End If
    gzb = gzb + 1
    h = Range("a1").CurrentRegion.Rows.Count
    Set z = Cells(h + 1, 1)
    ss = Dir '(*返回同一个目录的下一个文件*)
Loop Until ss = "" 'DO loop中间的代吗就是要循环的语句
mx.Columns.AutoFit '自动调整合并工作表的列宽
Rows("1:1").Select
Selection.AutoFilter
Application.ScreenUpdating = True '打开屏幕刷新
MsgBox "合并" & gzb & "张工作表格用时" & Timer - t & "秒" '弹窗显示统计时间
End Sub
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

供学习和研究使用,请在下载后24小时内删除
购买前可以联系作者确认资源信息,防止交易矛盾
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容