使用Excel宏代码将数据粘贴到表中

时间:2018-02-06 13:39:13

标签: excel vba

我正在尝试将一系列数据从一个工作簿复制并粘贴到另一个工作簿。假设我已经使用Excel宏代码将数据复制到我的剪贴板...如何确保将数据粘贴到另一个工作簿中,在特定工作表上并且必须位于新表中的新行中可能必须仍然创建行(表需要向下扩展一行)?我已经看了,看了一眼无济于事我发现了一个问题,就像我想要解决的问题一样。到目前为止我的代码如下,但它只粘贴到同一位置,并没有考虑表中已存在的数据。

Sub Devs_ImportData_2()
'
' Devs_ImportData_and_CreateTable_1 Macro
'
'

    Windows("DevVariables.txt").Activate
    Range("D3:D543").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("B_1_2 DevConfiguration.xlsm").Activate
    Range("B2").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True

    Range("A1").Select
    ActiveCell.FormulaR1C1 = "Devs"
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "D1"
    Range("A1:TV2").Select


    Columns("A:TV").EntireColumn.AutoFit


    Windows("DevVariables.txt").Activate
    ActiveWindow.Close

End Sub

1 个答案:

答案 0 :(得分:0)

我不会使用剪贴板来实现这一目标。您可以迭代工作簿A中的所有选定单元格,并将内容插入工作簿B中的单元格。然后,您可以确定每个单元格的操作。

否则,请使用您的粘贴:

Selection.Insert Shift:=xlDown

编辑:

我创建了一个示例来演示将所选范围转换为另一个工作簿,其中所选数据将插入目标工作簿中的选定行。此示例使用数组而不是剪贴板。

Sub insertrange()
Dim sourceSheet As Excel.Worksheet
Dim targetSheet As Excel.Worksheet
Dim arr() As Variant
Dim i, j As Long

Set sourceSheet = Application.Workbooks(2).Sheets(1)
Set targetSheet = Application.Workbooks(1).Sheets(1)

sourceSheet.Activate

ReDim arr(Selection.Rows.Count - 1, Selection.Columns.Count - 1)

For i = 0 To Selection.Rows.Count - 1
    For j = 0 To Selection.Columns.Count - 1
        arr(i, j) = Selection.Cells(i + 1, j + 1).Value
    Next
Next

targetSheet.Activate

Dim selectedCell As Excel.Range
Set selectedCell = Selection

Dim rowOffset As Long
rowOffset = selectedCell.row

For i = 0 To UBound(arr, 1)

    targetSheet.Rows(rowOffset + i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

    For j = 0 To UBound(arr, 2)
        targetSheet.Cells(i + rowOffset, j + 1).Value = arr(i, j)
    Next
Next

End Sub

以下是我如何准备工作表的截图,以及运行上述代码后的结果。需要进行一些添加和更改,例如列偏移以及行偏移,只是复制值可能不够。您可能需要公式或更复杂的东西,但基础知识就在那里。

source book

target book

result