我正在尝试将一系列数据从一个工作簿复制并粘贴到另一个工作簿。假设我已经使用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
答案 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
以下是我如何准备工作表的截图,以及运行上述代码后的结果。需要进行一些添加和更改,例如列偏移以及行偏移,只是复制值可能不够。您可能需要公式或更复杂的东西,但基础知识就在那里。