将数据从一个工作簿传输到另一个工作簿

Transfer data from one workbook to another

我目前正在编写一个代码,希望能完成这组事情:

  1. 从数据库文件中,让我select打开一个源文件
  2. 转到源 Sheet,并从源文件中复制 A、B、D、E 和 F 列的所有数据
  3. 返回数据库文件(数据 Sheet)并在 A、B、D、E 和 F 列中找到下一个空行。
  4. 然后逐列粘贴所有数据
  5. 关闭源文件不保存

我现有的代码仅满足要求 1 和 5。这是我当前的代码:

Option Explicit


    Sub Copy_data()
    Dim databasewkb As Workbook, sourcewkb As Workbook
    Dim Ret1, Ret2
    Dim srcws As Worksheet ' Variable for source workbook worksheets
    Dim databasews As Worksheet ' Variable for portal workbook worksheets
    Dim srcLR As Long ' last row of the source worksheet
    Set databasewkb = ActiveWorkbook

    '~~> Get the first File
    Ret1 = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", _
    , "Please select the source file file")
    If Ret1 = False Then
        ' Tell the user why the code has been terminated
        MsgBox ("Sorry, unable to proceed without a file.")
        Exit Sub
    End If

    ' Open the Source file
    Set sourcewkb = Workbooks.Open(Ret1)

    ' Set the source worksheet
    Set srcws = sourcewkb.Sheets("Source Sheet")

    ' Set the first destination worksheet
    Set databasews = databasewkb.Sheets("Data Sheet")

With srcws
    ' Find the last row of data in the Source worksheet
    srcLR = .Cells(Rows.Count, 1).End(xlUp).Row   

    'im not sure what to put here



    ' close the source workbook, don't save any changes
    sourcewkb.Close SaveChanges:=False

    ' Clear the objects
    Set srcws = Nothing
    Set sourcewkb = Nothing
    Set databasews = Nothing
    Set databasewkb = Nothing
    End Sub

'im not sure what to put here

    srcLR = .Cells(.Rows.Count, 1).End(xlUp).Row 
    ' Beware here, use ".Rows.Count" instead of "Rows.Count", because
    ' I suspect you are opening an old workbook in compatibility mode

    Dim srcRange as Range, destRange as Range

    Set srcRange = .Range("A1:B" & srcLR)
    Set destRange = databasews.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
    srcRange.Copy destRange

    Set srcRange = .Range("D1:F" & srcLR)
    Set destRange = destRange.Offset(0, 3)
    srcRange.Copy destRange

End With