分类
VBA

VBA应用——合并文件

日常工作中,我们有时候会需要将多份相同格式的工作簿合并到一个工作表中,进行数据分析和处理.

这时候,如果你一个个的打开粘贴,是非常耗时和耗费精力的.而且手工操作,免不了偶尔出个错,到了最后发现数据不对,一条条核对时候,就会在想,有没有什么操作,可以让你的双手解放一些呢?答案就是VBA.

下面一份代码,就是阁主写来合并多个工作簿的.现在放出来,以飨读者.

疏漏之处,还请包涵~

有问题欢迎指出,至于改不改嘛~看我心情.

Sub 合并文件()
    '注意,合并多个工作簿到当前激活工作簿的激活工作表,而不是代码所在工作簿
    '副作用:本代码有两项副作用,1是会取消所有的合并单元格,2是会取消所有的筛选,使用前,请确认是否可以接受.(可以放心的是,数据源工作簿并不会发生改变)
    Dim actWb As Workbook, actSh As Worksheet
    Set actWb = ActiveWorkbook
    Set actSh = ActiveSheet
    With Application.FileDialog(msoFileDialogFilePicker)
        If .Show = True Then
            Dim arrs
            Set arrs = .SelectedItems
        End If
        
    End With
    Dim s
    For Each s In arrs
        Dim obj
        Set obj = GetObject(s)
        Dim Sh As Worksheet
        For Each Sh In obj.Sheets
            '这里会遍历工作簿的所有的工作表,如果只需要遍历指定的工作表,请添加if条件
            'if sh.name="Sheet1" then
            Sh.Cells.UnMerge
            On Error Resume Next
            Sh.Cells.AutoFilter
            Sh.UsedRange.Copy actSh.Range("a1").Offset(actSh.UsedRange.Rows.Count + actSh.UsedRange.Row - 1, 0)
            If Err.Number <> 0 Then
                Debug.Print Err.Description & vbCrLf & Sh.Parent.Name & vbTab & Sh.Name
            End If
            On Error GoTo 0
            'end if
        Next
        obj.Close (False)
        Set obj = Nothing
        Set Sh = Nothing
    Next
End Sub

 

分类
未分类

三年

今天是腊月二十五。奶奶离开整整三年。