当前位置:编程学习 > VB >>

excel 多个文件数据合并

请问各位高手:我想把多个excel文件中的数据合并,有没有谁可以提供VBA代码?
同一文件夹下有book1.xls book2.xls……等,文件的个数不定,每个文件里只有sheet1里有内容,各文件第一行都是相同的,从第二行开始数据不同,现想把这些文件中的数据都汇总在一个新的sheet里,第一行内容还是sheet1中的第一行。 --------------------编程问答-------------------- 学习
--------------------编程问答-------------------- 如果续个打开COPY到新的工作表,那会好慢. --------------------编程问答-------------------- 用 VBA 很容易实现。

是把‘分散’的工作薄中的内容顺次添加到新建的工作薄中吗?

那些文件打开/添加的顺序有没有要求?
如果有顺序要求的话,文件名必须符合一定的命名规则。
--------------------编程问答-------------------- 粘贴俺的代码到你的VB模块里,然后将路径修改成你实际的路径,运行后即完成了数据合并,合并文件名为“合并后的文件.xls”。 

Option Explicit
Sub main()
    Dim strPath As String, strFile As String
    Dim nRows As Long, nCols As Long, c As Long
    Dim xlApp As Object, xlSrcBook As Object, xlNewBook As Object, xlSheet As Object, xlRange As Object
    
    strPath = "c:\temp\"
    If Dir(strPath & "合并后的文件.xls") <> "" Then Kill strPath & "合并后的文件.xls"
    Set xlApp = CreateObject("Excel.Application")
    Set xlNewBook = xlApp.Workbooks.Add
    strFile = Dir(strPath & "*.xls")
    Do While Len(strFile) > 0
        Set xlSrcBook = xlApp.Workbooks.Open(strPath & strFile, , True)
        Set xlSheet = xlSrcBook.Sheets(1)
        nRows = xlSheet.UsedRange.Rows.Count
        nCols = xlSheet.UsedRange.Columns.Count
        Set xlRange = xlSheet.Range(xlSheet.Cells(IIf(c, 2, 1), 1), xlSheet.Cells(nRows, nCols))
        xlRange.Select
        xlRange.Copy
        xlNewBook.Sheets(1).Cells(c + 1, 1).PasteSpecial &HFFFFEFF8
        c = xlNewBook.Sheets(1).UsedRange.Rows.Count
        xlSrcBook.Close
        strFile = Dir()
    Loop
    xlNewBook.SaveAs strPath & "合并后的文件.xls"
    xlNewBook.Close
    xlApp.Quit
    MsgBox "文件数据合并完毕!", vbInformation, "提示"
End Sub
--------------------编程问答-------------------- 本来可以使用ADO来实现的,考虑到可能需要保留格式,故采用了这种办法。 --------------------编程问答-------------------- Ding........
--------------------编程问答-------------------- 顶三巴 --------------------编程问答-------------------- up.mark --------------------编程问答--------------------
引用 4 楼 lyserver 的回复:
粘贴俺的代码到你的VB模块里,然后将路径修改成你实际的路径,运行后即完成了数据合并,合并文件名为“合并后的文件.xls”。

VB code

Option Explicit
Sub main()
    Dim strPath As String, strFile As String
    Dim nRows As Long, nCols As Long, c As Long
……



你好,我是小菜,我是按照上面的操作,路径也改过了,为什么就是不成功呢,急死了 --------------------编程问答-------------------- 用我的多工作簿合并工具《Excel工具集-合并工作表之02(多工作簿合并)》

http://www.okexcel.com.cn/bbs/viewthread.php?tid=757

--------------------编程问答-------------------- Option Explicit
Sub main()
    Dim strPath As String, strFile As String
    Dim nRows As Long, nCols As Long, c As Long
    Dim xlApp As Object, xlSrcBook As Object, xlNewBook As Object, xlSheet As Object, xlRange As Object
    
    strPath = "c:\temp\"
    If Dir(strPath & "合并后的文件.xls") <> "" Then Kill strPath & "合并后的文件.xls"
    Set xlApp = CreateObject("Excel.Application")
    Set xlNewBook = xlApp.Workbooks.Add
    strFile = Dir(strPath & "*.xls")
    Do While Len(strFile) > 0
        Set xlSrcBook = xlApp.Workbooks.Open(strPath & strFile, , True)
        Set xlSheet = xlSrcBook.Sheets(1)
        nRows = xlSheet.UsedRange.Rows.Count
        nCols = xlSheet.UsedRange.Columns.Count
        Set xlRange = xlSheet.Range(xlSheet.Cells(IIf(c, 2, 1), 1), xlSheet.Cells(nRows, nCols))
        xlRange.Select
        xlRange.Copy
        xlNewBook.Sheets(1).Cells(c + 1, 1).PasteSpecial &HFFFFEFF8
        c = xlNewBook.Sheets(1).UsedRange.Rows.Count
        xlSrcBook.Close
        strFile = Dir()
    Loop
    xlNewBook.SaveAs strPath & "合并后的文件.xls"
    xlNewBook.Close
    xlApp.Quit
    MsgBox "文件数据合并完毕!", vbInformation, "提示"
End Sub
这是把‘分散’的工作薄中的内容顺次添加到新建的工作薄中的代码,我想把他修改成“把‘分散’的工作薄中第N行的内容顺次添加到新建的工作薄中,希望有人能帮我一下,谢谢
补充:VB ,  VBA
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,