对于同类型 Excel 文件,一个个粘贴复制似乎比较麻烦,特别是文件量比较大的时候。程序的目的既是为了解决此类大量重复性劳动,今天给大家分享一个快速上传 Excel 数据,其实就是快速复制的小技巧。

对于文件上传,我们首先需要保证两份文档格式统一,因为 Excel 对于复制的数据如果格式不同意会报错。以下面两份实例文件格式为例,简单给下上传文件的代码,其他文件格式可做参照。

原始文档格式

目标文档格式

具体代码如下:

Sub startCopy()
    Dim folder As String
    Dim count As Integer
    Dim theBook As Workbook

    theFile = Application.GetOpenFilename(FileFilter:="Micrsoft Excel文件(*.xls), *.xls")
    Set theBook = Workbooks.Open(theFile)

    If theFile = "" Then
        MsgBox "未选择任何文件!"
        Exit Sub
    ElseIf theBook.Sheets(1).Range("A4") = "序号/层号" Then
        bool = CopyFile(theFile, 5, 1, 5)
        MsgBox "文件上传成功,请仔细核对!"
    Else
    
        theBook.Close
        MsgBox "文件格式不对,请仔细检查!"
    End If

End Sub

'复制数据
Function CopyFile(fileName, sStartRow, sStartCol, tStartRow)

    Dim sBook As Workbook
    Dim sSheet As Worksheet
    Dim rc As Integer

   'copyRowNum = 0

    If fileName = (ThisWorkbook.Path & "\" & ThisWorkbook.Name) Then
        Exit Function
    End If

    Set sBook = Workbooks.Open(fileName) '打开目标工作簿
    Set sSheet = sBook.Sheets(1) '使用第一个sheet作为源数据所在页

    sEndRow = sSheet.Cells(Rows.count, sStartCol + 1).End(xlUp).Row '获取源文件中最后一行数据所在行(第二列)
    sEndCol = sSheet.Cells(sStartRow - 1, Columns.count).End(xlToLeft).Column ' 获取源文件中最后一列数据所在列(标题行)

    If sEndRow >= srcStartLine Then
        sSheet.Range(Cells(sStartRow, sStartCol), Cells(sEndRow, sEndCol)).Copy ThisWorkbook.Sheets(1).Range("B" & tStartRow) '复制到指定位置
        'copyRowNum = sEndRow - srcStartLine + 1
    End If

    sBook.Close

End Function

以上。