首页 > Office专区 > Excel教程 >

如何把批量的excel文件整合到一张表

来源:互联网 2023-02-20 19:43:17 版权归原作者所有,如有侵权,请联系我们

相信各位职场人士经常会面临将大量excel文件内的数据整合到一张表里面,有时候这些excel文件的数量达数百张,如果一份一份文件打开,工作量将非常巨大,现在教大家如何利用excel内嵌的VBA程序完成这项工作并附上程序代码。xFb办公区 - 实用经验教程分享!

软件版本:Excel2007xFb办公区 - 实用经验教程分享!

制作步骤:xFb办公区 - 实用经验教程分享!

  • 在电脑的H盘(其它盘也行)建立“库存数据”(文件夹名称随意),文件夹的路径为:“H:库存数据”xFb办公区 - 实用经验教程分享!

  • 将大量需要整合的excel文件放于“H:库存数据”,所有文件的结构必须完全一致。xFb办公区 - 实用经验教程分享!

  • 在H盘根目录下建立".xlsm"类型的Excel文件,这里命名为“库存整合3”,打开文件,将第二步中的文件字段名结构复制到"sheet1"工作簿中。xFb办公区 - 实用经验教程分享!

  • 在“sheet2”添加activeX控件-命令按钮,如下图,选中命令按钮后,在工作表中左击并拖动鼠标,把命令按钮添加到"sheet1"区域中。xFb办公区 - 实用经验教程分享!

  • 鼠标放在“CommandButton1”右击,点击“属性”选项,并设置其属性,如下两图:xFb办公区 - 实用经验教程分享!

  • 双击“整合数据“按钮,打开“Microsoft Visual Basic”编辑器,注意:我这里是用一个已经做好的案例示范,下图中第二个红框的对象是“commandButton2”,各位的应该是“commandButton1”!然后在第四个红框和“End Sub”之间插入如下代码:xFb办公区 - 实用经验教程分享!

    Application.ScreenUpdating = FalsexFb办公区 - 实用经验教程分享!

    Application.DisplayAlerts = FalsexFb办公区 - 实用经验教程分享!

    Dim s, lj As StringxFb办公区 - 实用经验教程分享!

    Dim fso, fldPath, fldxFb办公区 - 实用经验教程分享!

    Dim wjs, i, j, k, l, y, t, r, e, w, b, n, m As IntegerxFb办公区 - 实用经验教程分享!

    m = 2xFb办公区 - 实用经验教程分享!

    For j = 2 To 300000 '导入数据前测试原有数据非空单元格xFb办公区 - 实用经验教程分享!

    If ThisWorkbook.Worksheets("sheet1").Cells(j, 1) = "" ThenxFb办公区 - 实用经验教程分享!

    GoTo uxFb办公区 - 实用经验教程分享!

    End IfxFb办公区 - 实用经验教程分享!

    NextxFb办公区 - 实用经验教程分享!

    u:xFb办公区 - 实用经验教程分享!

    If j = 2 ThenxFb办公区 - 实用经验教程分享!

    GoTo yyxFb办公区 - 实用经验教程分享!

    End IfxFb办公区 - 实用经验教程分享!

    UserForm1.Show 0xFb办公区 - 实用经验教程分享!

    For k = 2 To j '清除旧数据xFb办公区 - 实用经验教程分享!

    DoEventsxFb办公区 - 实用经验教程分享!

    UserForm1.Label4.Caption = "清除旧数据 :"xFb办公区 - 实用经验教程分享!

    UserForm1.Label3.Width = (k / (j - 2)) * 400xFb办公区 - 实用经验教程分享!

    If ThisWorkbook.Worksheets("sheet1").Cells(k, 1) = "" ThenxFb办公区 - 实用经验教程分享!

    GoTo yxFb办公区 - 实用经验教程分享!

    End IfxFb办公区 - 实用经验教程分享!

    ThisWorkbook.Worksheets("sheet1").Rows(k).DeletexFb办公区 - 实用经验教程分享!

    xFb办公区 - 实用经验教程分享!

    NextxFb办公区 - 实用经验教程分享!

    y:xFb办公区 - 实用经验教程分享!

    yy:xFb办公区 - 实用经验教程分享!

    On Error Resume NextxFb办公区 - 实用经验教程分享!

    fldPath = "H:库存数据"xFb办公区 - 实用经验教程分享!

    Set fso = CreateObject("Scripting.FileSystemObject")xFb办公区 - 实用经验教程分享!

    Set fld = fso.GetFolder(fldPath)xFb办公区 - 实用经验教程分享!

    wjs = fld.Files.CountxFb办公区 - 实用经验教程分享!

    lj = "H:库存数据"xFb办公区 - 实用经验教程分享!

    s = Dir("H:库存数据*.xls")xFb办公区 - 实用经验教程分享!

    Workbooks.Open Filename:=lj & sxFb办公区 - 实用经验教程分享!

    For i = 1 To 30000 '测试第一个导入数据的非空单元格xFb办公区 - 实用经验教程分享!

    If ActiveWorkbook.Worksheets(1).Cells(i, 1) = "" ThenxFb办公区 - 实用经验教程分享!

    GoTo xxFb办公区 - 实用经验教程分享!

    End IfxFb办公区 - 实用经验教程分享!

    NextxFb办公区 - 实用经验教程分享!

    x:xFb办公区 - 实用经验教程分享!

    For l = 2 To i '开始导入第一个数据xFb办公区 - 实用经验教程分享!

    For y = 1 To 11xFb办公区 - 实用经验教程分享!

    ThisWorkbook.Worksheets("sheet1").Cells(l, y) = ActiveWorkbook.Worksheets(1).Cells(l, y)xFb办公区 - 实用经验教程分享!

    NextxFb办公区 - 实用经验教程分享!

    NextxFb办公区 - 实用经验教程分享!

    ActiveWorkbook.ClosexFb办公区 - 实用经验教程分享!

    UserForm1.Show 0xFb办公区 - 实用经验教程分享!

    For t = 1 To wjs - 1xFb办公区 - 实用经验教程分享!

    s = DirxFb办公区 - 实用经验教程分享!

    DoEventsxFb办公区 - 实用经验教程分享!

    UserForm1.Label4.Caption = sxFb办公区 - 实用经验教程分享!

    UserForm1.Label1.Width = (t / (wjs - 1)) * 200xFb办公区 - 实用经验教程分享!

    For r = 2 To 300000 '测试导入位置的非空单元格xFb办公区 - 实用经验教程分享!

    If ThisWorkbook.Worksheets("sheet1").Cells(r, 1) = "" ThenxFb办公区 - 实用经验教程分享!

    GoTo wxFb办公区 - 实用经验教程分享!

    End IfxFb办公区 - 实用经验教程分享!

    NextxFb办公区 - 实用经验教程分享!

    w:xFb办公区 - 实用经验教程分享!

    m = rxFb办公区 - 实用经验教程分享!

    Workbooks.Open Filename:=lj & sxFb办公区 - 实用经验教程分享!

    For e = 1 To 30000 '测试每一个导入数据的非空单元格xFb办公区 - 实用经验教程分享!

    If ActiveWorkbook.Worksheets(1).Cells(e, 1) = "" ThenxFb办公区 - 实用经验教程分享!

    GoTo exFb办公区 - 实用经验教程分享!

    End IfxFb办公区 - 实用经验教程分享!

    NextxFb办公区 - 实用经验教程分享!

    e:xFb办公区 - 实用经验教程分享!

    For b = r To r e - 3 '正式导入数据xFb办公区 - 实用经验教程分享!

    DoEventsxFb办公区 - 实用经验教程分享!

    UserForm1.Label3.Width = ((b - r) / e) * 200xFb办公区 - 实用经验教程分享!

    xFb办公区 - 实用经验教程分享!

    For n = 1 To 11xFb办公区 - 实用经验教程分享!

    ThisWorkbook.Worksheets("sheet1").Cells(b, n) = ActiveWorkbook.Worksheets(1).Cells(b - m 2, n)xFb办公区 - 实用经验教程分享!

    NextxFb办公区 - 实用经验教程分享!

    NextxFb办公区 - 实用经验教程分享!

    ActiveWorkbook.ClosexFb办公区 - 实用经验教程分享!

    NextxFb办公区 - 实用经验教程分享!

    UserForm1.Label4.Caption = "成功了!"xFb办公区 - 实用经验教程分享!

    Application.OnTime Now() TimeValue("00:00:02"), "CL"xFb办公区 - 实用经验教程分享!

    xFb办公区 - 实用经验教程分享!

  • xFb办公区 - 实用经验教程分享!

  • 程序还设计到显示工作进度的窗体-进度窗体,如下图:xFb办公区 - 实用经验教程分享!

    xFb办公区 - 实用经验教程分享!

  • 进度窗体的添加方法如下,请各位务必看清每一个细节,否则程序运行出错!xFb办公区 - 实用经验教程分享!

  • 上图中的“进度窗体”为已经设计好的,以下教大家如何制作上图的青色和紫色的窗体,如下图,在窗体中添加4个“Label”空间,并按顺序排序。xFb办公区 - 实用经验教程分享!

  • “Label2”属性设置:xFb办公区 - 实用经验教程分享!

  • “Label4”属性设置将“Caption”属性设为“”,其它属性和“Label4”同。xFb办公区 - 实用经验教程分享!

  • “Label4”属性设置如下图:xFb办公区 - 实用经验教程分享!

  • “Label3”属性设置如下图:xFb办公区 - 实用经验教程分享!

  • 至此显示窗体效果如下图:xFb办公区 - 实用经验教程分享!

  • 添加"Textbok1",并按下图设置属性xFb办公区 - 实用经验教程分享!

  • 并将"Textbox1”移动到绿色条的位置,完全重合,效果如下:xFb办公区 - 实用经验教程分享!

  • 然后添加"Textbox2",其属性设置和“Textbox1”完全一样,并移动至“Label3”下面,完全重合。xFb办公区 - 实用经验教程分享!

  • 至此进度条效果如下:xFb办公区 - 实用经验教程分享!

  • 插入模块,如下图:xFb办公区 - 实用经验教程分享!

  • 将程序模块命名为“CL”,代码入校如下:xFb办公区 - 实用经验教程分享!

    Sub CL()xFb办公区 - 实用经验教程分享!

    Unload UserForm2xFb办公区 - 实用经验教程分享!

    End SubxFb办公区 - 实用经验教程分享!

    xFb办公区 - 实用经验教程分享!

  • 大功告成!点击保存按钮!xFb办公区 - 实用经验教程分享!

  • 返回"sheet1"工作区,如下图:xFb办公区 - 实用经验教程分享!

  • 点击“整合数据”按钮,运行数据整合程序:程序首先检查是否存在旧数据,如果存在旧数据则清除完旧数据后启动数据导入功能,如下图:xFb办公区 - 实用经验教程分享!

    xFb办公区 - 实用经验教程分享!

    xFb办公区 - 实用经验教程分享!

  • 完满成功!xFb办公区 - 实用经验教程分享!

    xFb办公区 - 实用经验教程分享!

  • xFb办公区 - 实用经验教程分享!

    xFb办公区 - 实用经验教程分享!

    xFb办公区 - 实用经验教程分享!

    xFb办公区 - 实用经验教程分享!

    xFb办公区 - 实用经验教程分享!

    xFb办公区 - 实用经验教程分享!

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!xFb办公区 - 实用经验教程分享!


    标签: excel文件

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号