将数据从一个工作簿复制并粘贴到另一个工作簿中

时间:2016-03-22 18:16:17

标签: excel vba

我正在尝试将选定范围的单元格从一个工作簿复制到另一个工作簿。这是我在第一个工作簿中使用的选择范围和复制代码:

Sub Copy()

'This selects the range of active cells, adds a border and copies all data.
    Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
End Sub

虽然这会选择并复制第一个工作簿中的单元格,但我很难将其与将其粘贴到另一个工作簿的宏相结合。下面是一个宏的示例,它将数据从一个工作簿粘贴到另一个工作簿:

Sub Paste()
Dim x As Workbook
Dim y As Workbook

'## Open both workbooks first:
Set x = Workbooks.Open(" path to copying book ")
Set y = Workbooks.Open(" path to destination book ")

'Now, transfer values from x to y:
y.Sheets("sheetname").Range("A1").Value = x.Sheets("name of copying sheet").Range("A1") 

'Close x:
x.Close

End Sub

两件事:

  1. 包含初始数据的第一个工作簿不是我计算机上保存的文档。这是从互联网上导出的表格我试图粘贴到我的计算机上保存的工作簿。因此,我认为第一个工作簿的文件路径或工作表名称不可能获得。
  2. 我希望将数据粘贴到第二个工作簿的A列中的第一个可用空白单元格中。我相信代码类似于:CurrentRow = Range("A1").End(xlDown).Offset(1, 0).Row然后显然会粘贴到从A列开始的那一行。
  3. 有人可以帮我将这两个代码合并为一个吗?

    非常感谢!

1 个答案:

答案 0 :(得分:0)

以下是我最近使用过的两段代码片段,可以帮助您解决困境。 第一个代码允许您按名称(或Office文档中所述的索引)查找特定工作表。这不需要您指定工作簿,因为它循环遍历所有当前打开的工作表。 昏暗的工作表作为工作表 Dim sheetName As String sheetName =" Sheet1" 对于工作表中的每个工作表     如果Sheet.Name = sheetName那么         设置GetSheet =工作表(sheetName)         退出     万一 下一张 下一个代码片段(我不能理解,但丢失了原始信息),它将在指定的工作表中搜索包含在内的任何和所有数据,并创建一个具有找到的单元格范围的范围对象。 (这可能不是你想要的,因为我不确定你的问题是关于你是想要所有的数据还是只是一个选择)。     将dataRange调暗为Range     Dim lastCol As Long     Dim lastRow As Long     Dim sheetCells作为范围     设置sheetCells = Sheet.Cells     如果WorksheetFunction.CountA(sheetCells)> 0然后         '通过按行向后搜索来搜索任何条目。         lastRow = sheetCells.Find(What:=" *",after:= [A1],_                    SearchOrder:= xlByRows,_                    SearchDirection:= xlPrevious).Row                '通过按列向后搜索来搜索任何条目。         lastCol = sheetCells.Find(What:=" *",after:= [A1],_                    SearchOrder:= xlByColumns,_                    SearchDirection:= xlPrevious).COLUMN             '设置从第一个单元格到最后一个包含数据的单元格的范围             设置dataRange = Sheet.range(Sheet.Cells(1,1),Sheet.Cells(lastRow,lastCol))     万一 一旦你有了一个范围对象,你可以做很多事情,但只需将值插入另一个工作表: 将newSheet变暗为WorkSheet set newSheet = ThisWorkbook.Worksheets(" New Sheet")'只是一个例子 '使用上一个代码段中的字段 newSheet.Range(newSheet.Cells(1,1),newSheet.Cells(lastRow,lastCol))。value = dataRange.Value