在office2016 vba中利用vb代码实现多个工作簿中的多个工作表合并成一个工作簿中的多个工作表

在office 2016中的visual basic中输入以下代码(并准确输入目表工作簿路径和保存文件路径):

Sub MergeWorkbooks()
    Dim folderPath As String
    Dim outputFilePath As String
    Dim mergedWorkbook As Workbook
    Dim wb As Workbook
    Dim ws As Worksheet
    
    ' 设置目标文件夹路径和目标文件名
    folderPath = "C:\Users\Administrator\Desktop\新建文件夹\物资汇总 - 副本\"
    outputFilePath = folderPath & "merged.xlsx"
    
    ' 创建一个空的总工作簿
    Set mergedWorkbook = Workbooks.Add
    
    ' 禁止屏幕刷新和事件处理
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    
    ' 获取目标文件夹中的所有文件名)(需要将该文件夹下的所有工作簿改成xls格式的(可在命令窗口用 ren *.* *.xls命令))
    fileName = Dir(folderPath & "*.xls")
    
    ' 遍历每个文件
    Do While fileName <> ""
        ' 打开文件
        Set wb = Workbooks.Open(folderPath & fileName)
        
        ' 遍历每个工作表
        For Each ws In wb.Worksheets
            ' 将每个工作表复制到总工作簿
            ws.Copy After:=mergedWorkbook.Sheets(mergedWorkbook.Sheets.Count)
        Next ws
        
        ' 关闭文件
        wb.Close SaveChanges:=False
        
        ' 获取下一个文件名
        fileName = Dir
    Loop
    
    ' 保存总工作簿
    mergedWorkbook.SaveAs outputFilePath
    
    ' 关闭总工作簿
    mergedWorkbook.Close
    
    ' 恢复屏幕刷新和事件处理
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    
    ' 提示合并完成
    MsgBox "合并完成。"
End Sub
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是 VBA 代码实现一个工作簿多张工作合并,处理标题不规范、不同的列不一样的情况: ```vb Sub MergeWorksheets() Dim mergedWorksheet As Worksheet Dim sourceWorksheet As Worksheet Dim lastRow As Long Dim lastColumn As Long Dim destinationColumn As Long Dim sourceColumn As Long Dim sourceRow As Long Set mergedWorksheet = Worksheets.Add(after:=Worksheets(Worksheets.Count)) mergedWorksheet.Name = "Merged Data" destinationColumn = 1 For Each sourceWorksheet In ThisWorkbook.Worksheets If sourceWorksheet.Name <> mergedWorksheet.Name Then lastRow = sourceWorksheet.Cells(Rows.Count, 1).End(xlUp).Row lastColumn = sourceWorksheet.Cells(1, Columns.Count).End(xlToLeft).Column For sourceColumn = 1 To lastColumn If WorksheetFunction.CountA(sourceWorksheet.Columns(sourceColumn)) > 1 Then mergedWorksheet.Cells(1, destinationColumn).Value = sourceWorksheet.Cells(1, sourceColumn).Value For sourceRow = 2 To lastRow mergedWorksheet.Cells(sourceRow, destinationColumn).Value = sourceWorksheet.Cells(sourceRow, sourceColumn).Value Next sourceRow destinationColumn = destinationColumn + 1 End If Next sourceColumn End If Next sourceWorksheet End Sub ``` 上述代码会新建一个名为“Merged Data”的工作,将当前工作簿的所有工作的数据合并到该工作。在合并过程,会忽略标题行的空单元格,只将非空单元格所处的列合并到目标,以避免不同的列不一样的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值