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

Excel 将数据从一个工作簿复制并粘贴到另一个工作簿中,excel,vba,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

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

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
两件事:

  • 第一个包含初始数据的工作簿不是我的计算机上保存的文档。这是从internet导出的工作表,我正试图粘贴到计算机上保存的工作簿中。因此,我认为无法获取第一个工作簿的文件路径或工作表名称
  • 我希望将数据粘贴到第二个工作簿A列的第一个可用空白单元格中。我相信它的代码是这样的:
    CurrentRow=Range(“A1”).End(xlDown).Offset(1,0).Row
    ,然后从A列开始粘贴到该行中
  • 有人能帮我把这两个代码合并成一个吗


    多谢各位

    以下是我最近使用的两段代码片段,它们应该可以帮助您摆脱困境

    第一个代码允许您按名称(或所述的索引)查找特定的工作表。这不需要您指定工作簿,因为它在所有当前打开的工作表中循环

    Dim Sheet As Worksheet
    Dim sheetName As String
    
    sheetName = "Sheet1"
    
    For Each Sheet In Worksheets
        If Sheet.Name = sheetName Then
            Set GetSheet = Worksheets(sheetName)
            Exit For
        End If
    Next Sheet
    
    下一个代码段(我不能相信,但已经丢失了源信息)将在指定的工作表中搜索包含在中的任何和所有数据,并创建一个包含找到的单元格范围的范围对象

    (这可能不是您想要的,因为我不确定您的问题是想要所有数据还是只是一个选择)

    一旦有了范围对象,您可以使用它做很多事情,但只需将值插入另一个工作表即可:

    Dim newSheet as WorkSheet
    
    set newSheet = ThisWorkbook.Worksheets("New Sheet") ' Just an example
    
    'Using fields from last code snippet
    newSheet.Range(newSheet.Cells(1,1), newSheet.Cells(lastRow,lastCol)).value = dataRange.Value
    

    为了回答上面的问题,我希望选择并复制初始工作表中的所有活动单元格。此外,我将三组代码组合成一组,但在第行中不断收到错误消息:Set sheetCells=Sheet.Cells。不明白为什么:谢谢@Sfadal@罗宾,对不起,我花了一段时间才回复。错误描述是什么?循环可能未按提供的名称找到工作表,因此对象不存在。检查工作表的名称,并在循环后使用断点运行调试,以检查“监视”选项卡中的“工作表”对象。谢谢@Sfadal,我收到以下错误:运行时错误“91”:未设置对象变量或带块变量。我希望将数据粘贴到的工作表的名称称为“Sheet1”,因此我不必更改代码中的任何内容。谢谢你的帮助!
    Dim newSheet as WorkSheet
    
    set newSheet = ThisWorkbook.Worksheets("New Sheet") ' Just an example
    
    'Using fields from last code snippet
    newSheet.Range(newSheet.Cells(1,1), newSheet.Cells(lastRow,lastCol)).value = dataRange.Value