从一个工作簿中提取数据并将其粘贴到另一个工作簿中

时间:2017-07-24 11:35:00

标签: excel vba excel-vba

我在驱动器中有一个excel文件" D"。我想从工作簿中复制数据 "原料"从sheet1到另一本工作簿" SC"在表格" BW"。

我使用下面的代码,从一个工作簿中提取数据并将其粘贴到另一个工作簿。

Sub extract()
Dim x As Workbook
Dim y As Workbook
Dim Val As Variant
Dim filename As String
Dim LastCell As Range
Dim LastRow As Long
CopyCol = Split("A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X", ",")
LR = Cells(Rows.Count, 1).End(xlUp).Row
LC = Cells(1, Columns.Count).End(xlToLeft).Column
LCell = Selection.SpecialCells(xlCellTypeLastCell).Address
LCC = Selection.SpecialCells(xlCellTypeLastCell).Column
LCR = Selection.SpecialCells(xlCellTypeLastCell).Row
Set y = ThisWorkbook ' set ThisWorkbook object (where this code lies)
Set x = Workbooks.Open("D:\Student\Jenny\Raw.xlsx")
For Count = 0 To UBound(CopyCol)
Set temp = Range(CopyCol(Count) & "1:" & CopyCol(Count) & LCR)
If Count = 0 Then
Set CopyRange = temp
Else
Set CopyRange = Union(CopyRange, temp)
End If
Next
CopyRange.Copy
y.Sheets("BW").Range("A5").PasteSpecial
x.Close
End Sub

这段代码是可行的,但问题是,在我的工作表" sheet1"我的数据从A4开始,并希望复制目标表中的数据" BW"来自A5。 当前代码,粘贴来自A7的复制数据。如何修改它从A5中粘贴复制数据的方式。

任何领导都会有所帮助。

1 个答案:

答案 0 :(得分:2)

Set temp尝试4而不是1作为

Set temp = Range(CopyCol(Count) & "1:" & CopyCol(Count) & LCR)
  

如何从源表中选择特定工作表(工作表结果)。 ?

使用

With x.Sheets("Result")
.
.
.
End With

x.Sheets("Result").或者你正在尝试的任何事情。

您有许多未使用和未声明的变量。您更新的代码可能如下所示:

Option Explicit

Sub extract()
    Dim x As Workbook, y As Workbook
    Dim temp As Range, CopyRange As Range
    Dim LR As Long, LC As Long, LCR As Long, Count As Long
    Dim copycol
    copycol = Split("A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X", ",")
    LR = Cells(Rows.Count, 1).End(xlUp).Row
    LC = Cells(1, Columns.Count).End(xlToLeft).Column
    Set y = ThisWorkbook ' set ThisWorkbook object (where this code lies)
    Set x = Workbooks.Open("D:\Student\Jenny\Raw.xlsx")

    With x.Sheets("Result")
    LCR = .Cells(.Rows.Count, 1).End(xlUp).Row
        For Count = 0 To UBound(copycol)
            Set temp = .Range(copycol(Count) & "4:" & copycol(Count) & LCR)
            If Count = 0 Then
                Set CopyRange = temp
            Else
                Set CopyRange = Union(CopyRange, temp)
            End If
        Next
        CopyRange.Copy
        y.Sheets("BW").Range("A5").PasteSpecial
    End With
    x.Close
End Sub