汇总Excel收集表

操作步骤

1.打开任一汇总收集表


2.若有宏安全性提醒,选择信任并启用宏


3.点击“汇总收集表按钮”

4.选择原文件,汇总文件保存路径的提示直接点击确定即可。

5.选择收集到的文件

6.提示:汇总完成,点击确定关闭文件即可。

注:无修改静默版不显示操作过程,不修改收集的文件格式;有修改刷新版显示操作过程并标记出修改的位置。

演示文件:https://anonyme.lanzouv.com/iVosd2gr0m6j

VBA代码
Sub 汇总收集表()
    On Error Resume Next
    Application.ScreenUpdating = False
    Dim oldFilePath As String
    Dim newFilePath As String
    Dim oldworkbook As Workbook
    Dim newworkbook As Workbook
    Dim oldSheet As Worksheet
    Dim newSheet As Worksheet
    Dim oldCell As Range
    Dim newCell As Range
    Dim SelectedFile As Variant
    Dim OriginalFilePath As String
    Dim OriginalFileName As String
    Dim NewFileName As String
    
 '选择原文件'
1
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "选择原文件"
    If .Show <> -1 Then
        If MsgBox("未选择文件,是否重新选择", vbOKCancel) = vbOK Then
            GoTo 1
        Else
            End
        End If
    End If
    Set oldworkbook = Workbooks.Open(.SelectedItems(1))
    OriginalFilePath = oldworkbook.Path
    OriginalFileName = oldworkbook.Name
    NewFileName = "汇总文件-" & OriginalFileName
    MsgBox "汇总文件将保存在原路径中,文件名为:" & NewFileName & ""
    End With
'选择新文件'
2
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "选择新文件"
        .AllowMultiSelect = True
    If .Show <> -1 Then
        If MsgBox("未选择文件,是否重新选择", vbOKCancel) = vbOK Then
            GoTo 2
        Else
            oldworkbook.Close SaveChanges:=False
            End
        End If
    End If
    For Each SelectedFile In .SelectedItems
        Set newworkbook = Workbooks.Open(SelectedFile)
        
            ' 比较每个工作表中的单元格 '
        For Each newSheet In newworkbook.Sheets
            Set oldSheet = oldworkbook.Sheets(newSheet.Name)
            
            ' 比较每个单元格的值 '
            For Each newCell In newSheet.UsedRange
                Set oldCell = oldSheet.Range(newCell.Address)
                
                ' 如果原文件单元格为空,则在原文件中填入新文件内容 '
                If oldCell.Value = "" Then
                    oldCell.Value = newCell.Value
                    newCell.Interior.Color = RGB(255, 0, 0) ' 标记为红色 '
                End If
            Next newCell
        Next newSheet
        newworkbook.Close SaveChanges:=False
    Next SelectedFile
    
    End With


' 关闭文件 '
    oldworkbook.SaveAs Filename:=OriginalFilePath & "\" & NewFileName
    oldworkbook.Close SaveChanges:=False
    
    
    ' 提示比较完成 '
    MsgBox "数据汇总完成!"
    ThisWorkbook.Close
End Sub

阅读原文

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容