vba的宏和模块,关于excel表的合并
2015-11-10 16:15
387 查看
Sub 工作薄间工作表合并()
Dim FileOpen
Dim X As Integer
Application.ScreenUpdating = False
FileOpen = Application.GetOpenFilename(FileFilter:="Microsoft Excel文件(*.xls),*.xls", MultiSelect:=True, Title:="合并工作薄")
X = 1
While X <= UBound(FileOpen)
Workbooks.Open Filename:=FileOpen(X)
Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
X = X + 1
Wend
ExitHandler:
Application.ScreenUpdating = True
Exit Sub
errhadler:
MsgBox Err.Description
End Sub
这是多个文件合成到一个文件,不同的sheet,打开文件夹后要使用shift或者ctrl键选择所有需要的文件,一起哗,拉进来。
Sub hbgzb()
Dim sh As Worksheet, flag As Boolean, i As Integer, hrow As Integer, hrowc As Integer
flag = False
For i = 1 To Sheets.Count
If Sheets(i).Name = "合并数据" Then flag = True
Next
If flag = False Then
Set sh = Worksheets.Add
sh.Name = "合并数据"
Sheets("合并数据").Move after:=Sheets(Sheets.Count)
End If
For i = 1 To Sheets.Count
If Sheets(i).Name <> "合并数据" Then
hrow = Sheets("合并数据").UsedRange.Row
hrowc = Sheets("合并数据").UsedRange.Rows.Count
If hrowc = 1 Then
Sheets(i).UsedRange.Copy Sheets("合并数据").Cells(hrow, 1).End(xlUp)
Else
Sheets(i).UsedRange.Copy Sheets("合并数据").Cells(hrow + hrowc - 1, 1).Offset(1, 0)
End If
End If
Next i
End Sub
前提是sheet里面的目录项一致。还要选择这些目录项,和深度。
试过的哦,还可以的。
Dim FileOpen
Dim X As Integer
Application.ScreenUpdating = False
FileOpen = Application.GetOpenFilename(FileFilter:="Microsoft Excel文件(*.xls),*.xls", MultiSelect:=True, Title:="合并工作薄")
X = 1
While X <= UBound(FileOpen)
Workbooks.Open Filename:=FileOpen(X)
Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
X = X + 1
Wend
ExitHandler:
Application.ScreenUpdating = True
Exit Sub
errhadler:
MsgBox Err.Description
End Sub
这是多个文件合成到一个文件,不同的sheet,打开文件夹后要使用shift或者ctrl键选择所有需要的文件,一起哗,拉进来。
Sub hbgzb()
Dim sh As Worksheet, flag As Boolean, i As Integer, hrow As Integer, hrowc As Integer
flag = False
For i = 1 To Sheets.Count
If Sheets(i).Name = "合并数据" Then flag = True
Next
If flag = False Then
Set sh = Worksheets.Add
sh.Name = "合并数据"
Sheets("合并数据").Move after:=Sheets(Sheets.Count)
End If
For i = 1 To Sheets.Count
If Sheets(i).Name <> "合并数据" Then
hrow = Sheets("合并数据").UsedRange.Row
hrowc = Sheets("合并数据").UsedRange.Rows.Count
If hrowc = 1 Then
Sheets(i).UsedRange.Copy Sheets("合并数据").Cells(hrow, 1).End(xlUp)
Else
Sheets(i).UsedRange.Copy Sheets("合并数据").Cells(hrow + hrowc - 1, 1).Offset(1, 0)
End If
End If
Next i
End Sub
前提是sheet里面的目录项一致。还要选择这些目录项,和深度。
试过的哦,还可以的。
相关文章推荐
- Vb.net 控件背景色透明设置BackColor 和Parent
- ubuntu下vbox不能使用u盘问题(慎用)
- vbs自学(二)
- 压缩VBox虚拟机空间的方法
- C#、VB.NET 使用System.Media.SoundPlayer播放音乐
- vbox错误1790
- VB.NET控制台程序获取程序运行路径
- vba 删除行
- 批处理+VBS+注册表实现开机自动启动EXE程序
- 视频m3u8文件转ts视频,vb.net源码(各小段视频下载合并)
- 使用vbs脚本进行批量编码转换
- 【VB.NET】如何自动生成类头注释
- HP-VB
- VBScript
- HP-VB
- VB-UFT
- VB读写文件
- VBA爬虫小试
- Vbs脚本经典教材(转)
- 利用Excel VBA批量计算长时间序列植被物候动态阈值(逐像元)