vba 批量收集汇总EXCEL数据

2025-11-09 01:38:25

1、按照下图整理需要统计的文件夹(当前文档目录下的文件夹),工作薄名,工作表名,对应返回数据(可以为空),是否更新,

 亲!格式不一样也可以哦,需要微调代码啊!

vba 批量收集汇总EXCEL数据

2、启用开发工具选项卡;

1,点击选项,2,点击自定义功能区,3,勾选开发工具

vba 批量收集汇总EXCEL数据

vba 批量收集汇总EXCEL数据

3、设置控件;

1,插入命令控件;

2,修改控件名称及显示名;

vba 批量收集汇总EXCEL数据

vba 批量收集汇总EXCEL数据

4、 进入VBA编程界面;复制以下代码到编辑窗口

Private Sub 查询汇总_Click()

config = vbYesNo + vbQuestion + vbDefaultButton1

 ans = MsgBox("你确认更新数据吗?", config, "提示")

    If ans = vbYes Then

     Dim cnn As Object, rs As Object, SQL$, i&, A&, B&, C&, D&, E&, sFile$, sFile1$, sFile2$, sFile3$, sFile4$, sFile5$, sFile6$

     Dim wb As Object, ws As Object 

   '取得当前工作表的最后行数

   C = ActiveSheet.UsedRange.Rows.Count + 1

   '取得当前工作表的最后列数

   E = ActiveSheet.UsedRange.Columns.Count      

   '创建需要更新工作表的循环数据

    For D = 2 To Application.WorksheetFunction.CountA(Worksheets("参数").Range("A:A"))

         '是否查询

      sFile1 = Sheets("参数").Cells(D, 5).Value

          '文件夹

      sFile2 = Sheets("参数").Cells(D, 1).Value      

         '工作薄

      sFile3 = Sheets("参数").Cells(D, 2).Value      

         '工作表

      sFile4 = Sheets("参数").Cells(D, 3).Value      

         '返回值

      sFile5 = Sheets("参数").Cells(D, 4).Value     

         '预算路径

      sFile = ThisWorkbook.Path & "\" & sFile2 & "\" & sFile3 & ".xlsx"

            '判断是否查询

             If sFile1 = "是" Then           

             '判断参数内的工作表的名是否为空,为空时取值当前工作表名           

              If sFile4 = "" Then

                 sFile6 = ActiveSheet.Name

                 Else

                 sFile6 = sFile4

               End If

               

              Cells(1, 11) = "正在更新:" & sFile2 & sFile3

              '锁定工作薄焦点

               Application.ScreenUpdating = False

               Application.ShowWindowsInTaskbar = False

              '打开工作薄

               Set wb = Workbooks.Open(sFile, False, False)

              '打开工作表

               Set ws = wb.Worksheets(sFile6)

               '当前表行数循环

               For A = 2 To wb.Worksheets(sFile6).UsedRange.Rows.Count

                   Cells(C, 1) = sFile5

                    For B = 1 To E        

                   Cells(C, B + 1) = wb.Worksheets(sFile6).Cells(A, B).Value

                   Next

                 C = C + 1

               Next

                 wb.Close Savechanges:=True

               '解除工作薄焦点

             Application.ShowWindowsInTaskbar = True

             Application.ScreenUpdating = True          

             Cells(1, 11) = "更新完成!"

            End If

        Next

  MsgBox "更新完成!", vbInformation

  If ans = vbNo Then

  Exit Sub

End If

End If

End Sub

vba 批量收集汇总EXCEL数据

5、大功告成,测试图如下,

第二行为表头行,第一列为对应返回数据,从第二列开始是汇总数据

vba 批量收集汇总EXCEL数据

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢