1、按照下图整理需要统计的文件夹(当前文档目录下的文件夹),工作薄名,工作表名,对应返回数据(可以为空),是否更新,亲!格式不一样也可以哦,需要微调代码啊!
2、启用开发工具选项卡;1,点击选项,2,点击自定义功能区,3,勾选开发工具
3、设置控件;1,插入命令控件;2,修改控件名称及显示名;
4、进入VBA编程界面;复制以下代码到编辑窗口Private Sub 查询汇总_Click()config = vbYesNo + vbQuestion + vbDefault蚱澄堆别Button1ans = 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 SubEnd IfEnd IfEnd Sub
5、大功告成,测试图如下,第二行为表头行,第一列为对应返回数据,从第二列开始是汇总数据