问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求一个VBA,一个文件夹中多个EXCEL工作簿合并成一个工作表?

发布网友 发布时间:2022-04-30 21:11

我来回答

8个回答

热心网友 时间:2022-04-18 22:43

1、将需要合并的EXCEL文件与目的EXCEL文件放在一个文件夹下。

2、 打开HB.xlsx,将“开发工具”菜单加载到EXCEL菜单下。

3、首先右键点击菜单空白处,选择“自定义功能区”,在弹出的对话框里选择主选项卡。然后勾选“开发工具”。如图所示。

4、 制作导入键。点击“开发工具”菜单,选择“插入”--“Activex”控件下的命令按键。在工作表中画一个命令按钮。

5、 单击“开发工具”下的“设计模式”,再双击刚刚创建的命令按钮“CommandButton1”,进入代码编辑框。

6、  将以下代码全部复制到代码框中。

7、  将HB文件保存成启用宏的工作簿。关闭当前代码框,回到EXCEL界面。选择“文件”--“另存为”--“保存类型”下选择“启用宏的工作簿”,OK。

8、打开HB.xlsm,单击按钮。则几个需要合并的EXCEL文件中的工作表A,B,C合并到了HB.xlsm这个文件中。

热心网友 时间:2022-04-19 00:01

VBA代码如下:

Sub s()

pth = "D:\My Documents\" '在这里输入文件所在文件夹的完整路径

    fn = Dir(pth & "*.xls")

Set newbk = Workbooks.Add

Set sht = newbk.Sheets(1)

k = 1

Application.DisplayAlerts = False

    Do While fn <> ""

        Set wb = Workbooks.Open(pth & fn)

For i = 1 To wb.Sheets.Count

            sht.Cells(k, 1) = fn & ":" & wb.Sheets(i).Name

k = k + 1

wb.Sheets(i).UsedRange.Copy

sht.Cells(k, 1).PasteSpecial xlPasteValuesAndNumberFormats

k = sht.UsedRange.Rows.Count + 1

Next

wb.Close False

fn = Dir

Loop

    newbk.SaveAs pth & "new.xlsx" '在这里设定合并文件的文件名

newbk.Close False

Application.DisplayAlerts = True

End Sub

扩展资料:

也可以用如下代码实现:

Sub a()

For Each myfile In CreateObject("scripting.FileSystemObject").GetFolder(ThisWorkbook.Path).Files

If myfile.Name Like "*.xl*" And Not myfile.Name Like "*" & ThisWorkbook.Name & "*" Then

With Workbooks.Open(myfile)

sheetcount = .Sheets.Count

For i = 1 To sheetcount

.Sheets(i).Copy After:=ThisWorkbook.Sheets(1)

Next

.Close False

End With

End If

Next

ThisWorkbook.Save

End Sub

将所有的excel放在同一个工作簿即可实现。

热心网友 时间:2022-04-19 01:36

Sub s()
    pth = "D:\My Documents\" '在这里输入文件所在文件夹的完整路径
    fn = Dir(pth & "*.xls")
    Set newbk = Workbooks.Add
    Set sht = newbk.Sheets(1)
    k = 1
    Application.DisplayAlerts = False
    Do While fn <> ""
        Set wb = Workbooks.Open(pth & fn)
        For i = 1 To wb.Sheets.Count
            sht.Cells(k, 1) = fn & ":" & wb.Sheets(i).Name
            k = k + 1
            wb.Sheets(i).UsedRange.Copy
            sht.Cells(k, 1).PasteSpecial xlPasteValuesAndNumberFormats
            k = sht.UsedRange.Rows.Count + 1
        Next
        wb.Close False
        fn = Dir
    Loop
    newbk.SaveAs pth & "new.xlsx" '在这里设定合并文件的文件名
    newbk.Close False
    Application.DisplayAlerts = True
End Sub

热心网友 时间:2022-04-19 03:27

Sub t1()
Dim fdOpen As FileDialog
Dim fdPath$, fo, fd, f, xls, sh, dsh, r%
    Set fdOpen = Application.FileDialog(msoFileDialogFolderPicker)
    With fdOpen
        If .Show Then fdPath = .SelectedItems(1)
    End With    
    Set fo = CreateObject("Scripting.FileSystemObject")
    Set fd = fo.GetFolder(fdPath)
    Set dsh = ThisWorkbook.Sheets.Add
    dsh.Name = "合并" & ThisWorkbook.Sheets.Count
    r = 1
    dsh.Activate
    Application.ScreenUpdating = False
    For Each f In fd.Files
        If f.Name <> ThisWorkbook.Name And Not f.Name Like "~$*" And (f.Name Like "*.xls" Or f.Name Like "*.xlsx") Then
            Set xls = Workbooks.Open(f.Name)
            For Each sh In xls.Sheets
                sh.UsedRange.Copy dsh.Cells(r, 1)
                r = r + sh.UsedRange.Rows.Count
            Next
            xls.Close
        End If
    Next
    Application.ScreenUpdating = True
End Sub

 ===========================

Sub t2()
Dim fdOpen As FileDialog
Dim fdPath$, f, xls, sh, dsh, r%
    Set fdOpen = Application.FileDialog(msoFileDialogFolderPicker)
    With fdOpen
        If .Show Then fdPath = .SelectedItems(1)
    End With
    
    Set dsh = ThisWorkbook.Sheets.Add
    dsh.Name = "合并" & ThisWorkbook.Sheets.Count
    r = 1
    dsh.Activate
    Application.ScreenUpdating = False
    f = Dir(fdPath & "\*.xls*")
    Do While f <> ""
        If f <> ThisWorkbook.Name And Not f Like "~$*" Then
            Set xls = Workbooks.Open(f)
            For Each sh In xls.Sheets
                sh.UsedRange.Copy dsh.Cells(r, 1)
                r = r + sh.UsedRange.Rows.Count
            Next
            xls.Close
        End If
        f = Dir()
    Loop
    Application.ScreenUpdating = True
End Sub

热心网友 时间:2022-04-19 05:35

Sub a()

For Each myfile In CreateObject("scripting.FileSystemObject").GetFolder(ThisWorkbook.Path).Files

If myfile.Name Like "*.xl*" And Not myfile.Name Like "*" & ThisWorkbook.Name & "*" Then

With Workbooks.Open(myfile)

sheetcount = .Sheets.Count

For i = 1 To sheetcount

.Sheets(i).Copy After:=ThisWorkbook.Sheets(1)

Next

.Close False

End With

End If

Next

ThisWorkbook.Save

End Sub

将所有的excel放在同一个工作簿即可实现

追问没反映啊

追答

你打开文件33的文件,打开编辑器,运行a的代码,如果还是不会就看附件,替换原来的文件,直接点击按钮就行,不过你要将这个excel和你需要的excel放在同一个路径

热心网友 时间:2022-04-19 08:00

Sub Macro1()
    Dim MyPath$, MyName$, sh As Worksheet, sht As Worksheet
    Application.ScreenUpdating = False
    Set sh = ActiveSheet
    MyPath = ThisWorkbook.Path & "\"
    MyName = Dir(MyPath & "*.xls")
    [a1].CurrentRegion.Offset(2).Clear
    Do While MyName <> ""
        If MyName <> ThisWorkbook.Name Then
            With GetObject(MyPath & MyName)
                For Each sht In .Sheets
                    If sht.[a1].CurrentRegion.Rows.Count > 2 Then
                        lr = sh.[a1].CurrentRegion.Rows.Count + 1
                        r = sht.[a1].CurrentRegion.Rows.Count - 2
                        sh.Cells(lr, 1).Resize(r) = MyName
                        sh.Cells(lr, 2).Resize(r) = sht.Name
                        sht.[a1].CurrentRegion.Offset(2).Copy sh.Cells(lr, 3)
                    End If
                Next
                .Close False
            End With
        End If
        MyName = Dir
    Loop
    Application.ScreenUpdating = True
    MsgBox "ok"
End Sub

试试这个

追问没有反映的就显个OK

追答操作如下:
1、在同文件夹下建立一个新表格
2、复制代码
3、执行
如果没有反应,那么检查一下:
1、所有分表的数据是否存在,如果只是一个表头,是不会合并的。
2、所有表格的格式是.xls还是.xlsx?如果是后者,那么代码中的*.xls改成*.xls*
检查过后还是没有反应,把你的分表截图上来看看

热心网友 时间:2022-04-19 10:41

需要确认几个问题:该文件夹路径是否固定? 工作表的格式是否相同? 复制是否包含表头行?追问

路径只能是在:f/新建文件夹,我是win7系统显示的路径如下图有点和以前的XP不一样,

格式是一个的但内容多少不一样,表名和工作簿名不一样,复制全部包含表头,如果一个表里中间有空行那也要把后面的全部内容包括空行都合并过去

    追答

    打开文件,Alt+F8运行,在工具文件相同路径下生成Totaldata_yyyymmdd文件.

    代码中的myPath路径修改为实际路径即可.

    Sub Files2Sheet()
        Application.ScreenUpdating = False
        Dim myPath$, myFile$, AK As Workbook, aRow%, tRow%, i As Integer
        myPath = "C:\test\"
        myFile = Dir(myPath & "*.xls*")
        Cells.Clear
        Do While myFile <> ""
            If myFile <> ThisWorkbook.Name Then
                Set AK = Workbooks.Open(myPath & myFile)
                For i = 1 To AK.Sheets.Count
                   aRow = AK.Sheets(i).Range("a65536").End(xlUp).Row
                   tRow = ThisWorkbook.Sheets(1).Range("a65536").End(xlUp).Row
                   AK.Sheets(i).Range("a1:t" & aRow).Copy ThisWorkbook.Sheets(1).Range("a" & tRow)
                Next
                Workbooks(myFile).Close False
            End If
            myFile = Dir
        Loop
        ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\Totaldata_" & Format(Date, "yyyymmdd"), FileFormat:=xlNormal
        Application.CutCopyMode = False
        Application.ScreenUpdating = True
    End Sub


    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 Excel中怎么把五个Excel中的数据汇总到一个Excel 中。Excel 中VB编程实现 如何将两个内容不一致的excel表格汇总到一张表? 如何使用VB实现多个excel表格合并在一个EXCEL表格里面 什么瘦腿精油好用(瘦大腿)的. 用过的来说说 瘦脸瘦腿瘦臀各用什么单方精油最好 瘦腿可以用玫瑰单方精油吗 瘦腿精油自己配置成复方精油,要用什么单方精油?基础油+什么单方精油?多少滴?? 单方的薰衣草精油摸在腿上可以瘦腿吗? 瘦腿精油什么牌子好 iPad mini4使用年限是多少 苹果平板mini4哪一年上市的 大疆无人机清理沙子 DJI大疆无人机怎么样,是个骗局吗 苹果mini4 是什么时候发布的 最厉害的无人机公司是怎么败给大疆的 大疆无人机手下败将是如何在农业领域吊打大疆的? 大疆无人机就这么厉害吗,没人能对抗它 中国大疆无人机这么厉害 什么武器才能高效击落它 铝粉在建筑方面有什么作用? 山东银箭铝银浆的目数跟微米换算 求一个VBA,一个文件夹中多个EXCEL工作簿合并成一个工作表? 利用VB操作多张Excel表格合并并且将合并后的表格与总表对比,这样的需求该如何实现啊 利用VB操作多张Excel表格合并并且将合并后的表格与总表对比,这样的需求该如何实现啊 vb如何提取多个Excel文件中某个表格的某列数据到一个Excel表格里,如图,共有100多个表 vb如何提取多个Excel文件中某个表格的某列数据到一个Excel表格里,如图,共有100多个表 excel2016怎么汇总多个表格组成一个大表 excel宏,如何将数百个工作簿的中指定数据汇总到一个新工作簿的新工作表。请高手指教 excel宏,如何将数百个工作簿的中指定数据汇总到一个新工作簿的新工作表。请高手指教 淘宝排行榜的软件简介 2009年淘宝各类别商品交易额及排行榜 在淘宝里打折的商品排名会靠前吗? 荣耀7如何设置开机密码 荣耀V10怎样更改开机密码 2019*克大师赛丁俊晖和奥沙利文比赛多会开始?在哪个直播平台能看到 手机怎么看17号奥沙利文比赛直播 今曰cc七v5斯诺克世锦赛有奥沙利文比赛直播吗 2010年11月11号斯诺克超级联赛奥沙利文vs罗伯逊比赛哪里直播 奥沙利文vs威廉姆斯的比赛 哪个台直播? 丁俊晖奥沙利文今晚比赛,哪里能看直播 急!!在哪里可以看到明天4月22日世界斯诺克比赛直播