Excel学习-批量导入数据

办公软件 itxz 1个月前 (09-09) 50次浏览 0个评论

对于同类型 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

IT学者 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Excel学习-批量导入数据
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址