Excel VBA将列复制到现有工作簿

Excel VBA将列复制到现有工作簿,excel,vba,Excel,Vba,我有一个工作簿,source.xlsm,工作表“test1”列A6:A20,我需要将它复制到位于我的C:。。。命名为dest.xlsx,工作表“资产”,列“I”。我需要能够复制数据,并能够在不覆盖以前复制的数据的情况下添加到列中。任何帮助都是救命稻草 Sub Align() Dim TargetSh As String TargetSh = "Assets" For Each WSheet In Application.Worksheets If W

我有一个工作簿,source.xlsm,工作表“test1”列A6:A20,我需要将它复制到位于我的C:。。。命名为dest.xlsx工作表“资产”列“I”。我需要能够复制数据,并能够在不覆盖以前复制的数据的情况下添加到列中。任何帮助都是救命稻草

Sub Align()
    Dim TargetSh As String

    TargetSh = "Assets"

    For Each WSheet In Application.Worksheets

        If WSheet.Name <> TargetSh Then
            WSheet.Select
            Range("A6:A20").Select
            Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
            Selection.Copy
            Sheets(TargetSh).Select
            lastRow = Range("I65532").End(xlUp).Row
            Cells(lastRow + 1, 1).Select
            ActiveSheet.Paste
        End If
    Next WSheet
End Sub
Sub-Align()
将目标设置为字符串
TargetSh=“资产”
对于Application.Worksheets中的每个WSheet
如果WSheet.Name TargetSh,则
WSheet.Select
范围(“A6:A20”)。选择
范围(选择,ActiveCell.SpecialCells(xlLastCell))。选择
选择,复制
图纸(TargetSh)。选择
lastRow=范围(“I65532”)。结束(xlUp)。行
单元格(lastRow+1,1)。选择
活动表。粘贴
如果结束
下一页
端接头

这就是您要尝试的吗?我没有对它进行测试,但我认为它应该有效。如果您有任何错误,请告诉我

Sub Sample_Copy()
    Dim wb As Workbook, wbTemp As Workbook
    Dim ws As Worksheet, wsTemp As Worksheet
    Dim lastRow As Long

    Set wb = ThisWorkbook
    Set ws = wb.Sheets("test1")

    '~~> Change path as applicable
    Set wbTemp = Workbooks.Open("C:\dest.xlsx")
    Set wsTemp = wbTemp.Sheets("Assets")

    lastRow = wsTemp.Range("I" & Rows.Count).End(xlUp).Row + 1

    ws.Range("A6:A20").Copy wsTemp.Range("I" & lastRow)

    Application.CutCopyMode = False

    '~~> Cleanup
    wbTemp.Close savechanges:=True
    Set wb = Nothing: Set wbTemp = Nothing
    Set ws = Nothing: Set wsTemp = Nothing
End Sub


Sid

这就是你要尝试的吗?我没有对它进行测试,但我认为它应该有效。如果您有任何错误,请告诉我

Sub Sample_Copy()
    Dim wb As Workbook, wbTemp As Workbook
    Dim ws As Worksheet, wsTemp As Worksheet
    Dim lastRow As Long

    Set wb = ThisWorkbook
    Set ws = wb.Sheets("test1")

    '~~> Change path as applicable
    Set wbTemp = Workbooks.Open("C:\dest.xlsx")
    Set wsTemp = wbTemp.Sheets("Assets")

    lastRow = wsTemp.Range("I" & Rows.Count).End(xlUp).Row + 1

    ws.Range("A6:A20").Copy wsTemp.Range("I" & lastRow)

    Application.CutCopyMode = False

    '~~> Cleanup
    wbTemp.Close savechanges:=True
    Set wb = Nothing: Set wbTemp = Nothing
    Set ws = Nothing: Set wsTemp = Nothing
End Sub


Sid

任何帮助都会是一个救命恩人
肯定:)你能告诉我们你试过什么吗?我该如何格式化代码,使其不成束?你可以使用`和`来包围代码。如果它们的格式仍然不正确,那么我们中的一个将为您编辑:)将此代码粘贴到您上面的问题中,然后删除上面的注释似乎您误解了我,我已经在上面的问题中粘贴了你的代码:)
任何帮助都会是一个救生圈
肯定:)你能告诉我们你试过什么吗?我如何设置代码的格式,使其不成束?你可以使用`和`来包围代码。如果它们的格式仍然不正确,那么我们中的一个将为您编辑:)将此代码粘贴到上面的问题中,然后删除上面的注释似乎您误解了我,我已将您的代码粘贴到上面的问题中:)绝对精通。当你看到它写得这么好的时候,你会惊讶地发现它是多么的明显。。。你这马屁精!哈哈,别开玩笑了。很高兴能帮上忙:)绝对精通。当你看到它写得这么好的时候,你会惊讶地发现它是多么的明显。。。你这马屁精!哈哈,别开玩笑了。很高兴能帮上忙:)