当前位置: 首页 > 知识库问答 >
问题:

复制范围并粘贴到新工作簿中

韦衡
2023-03-14

这应该真的很简单,但我一直在拖网论坛和答案数小时来寻找答案,但没有运气,所以我(不情愿地)创造了一个我自己的问题。

我要做的只是简单地创建一个新工作簿,并将另一个工作簿的范围粘贴到该工作簿中。听起来很简单..?

我原来的工作簿,让我们叫Book1。我试图创建一个新的工作簿,Book2,我将把单元格A1:B10的值复制到其中。

以下是我代码的一个版本(从第一册打开开始):

Range("A1:B10").Copy
Set NewBook = Workbooks.Add
    With NewBook
        .SaveAs Filename:="Book2.xls"
    End With
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

这会给出一个“Range类的pastespecial失败”错误。我已经尝试了以下修复,但没有运气:

  • 将“工作簿(”book2.xls“)。激活”添加到代码中
  • 删除了PasteSpecial行中的额外参数
  • 尝试了'.Paste'而不是'.PasteSpecial'
  • 将“Selection.PastEspecial”更改为“ActiveSheet.PastEspecial”
  • 显式引用复制范围,包括工作簿和工作表引用
  • 首先创建新工作簿,然后执行复制,然后重新激活新工作簿并粘贴

以上解决方案都不起作用...在这个阶段,任何智慧都将被感激地接受!

共有1个答案

殳睿
2023-03-14

这就是你要尝试的吗?我已经对代码进行了注释,以便您在理解代码的功能时不会有任何问题。

Option Explicit

Sub Sample()
    Dim wbI As Workbook, wbO As Workbook
    Dim wsI As Worksheet, wsO As Worksheet

    '~~> Source/Input Workbook
    Set wbI = ThisWorkbook
    '~~> Set the relevant sheet from where you want to copy
    Set wsI = wbI.Sheets("Sheet1")

    '~~> Destination/Output Workbook
    Set wbO = Workbooks.Add

    With wbO
        '~~> Set the relevant sheet to where you want to paste
        Set wsO = wbO.Sheets("Sheet1")

        '~~>. Save the file
        .SaveAs Filename:="C:\Book2.xls", FileFormat:=56

        '~~> Copy the range
        wsI.Range("A1:B10").Copy

        '~~> Paste it in say Cell A1. Change as applicable
        wsO.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    End With
End Sub
 类似资料:
  • 我写了下面的代码,并不断地看到。我试图克服这个问题,但似乎没有任何效果。我正试图从一个工作簿复制整个工作表,并将其粘贴到另一个工作簿中:

  • 标题或多或少概括了它。我试图使一个简单的宏打开,然后复制/粘贴数据从txt文件到一个新打开的工作簿。我有什么工作,但它粘贴到个人工作簿,在打开一个新的“book1”之前。我可以让它粘贴到Book1,但我只想让它粘贴到打开的第一个工作簿中,以防以后我想在同一个文件中添加更多数据。我对此相当陌生,所以任何帮助都将不胜感激!!

  • 在一个编码的UI测试中,我试图使用range.copy从excel复制一个动态范围,并通过ctrl+V将其粘贴到wpf网格中。

  • 我需要从一个工作簿复制棕褐色单元格并粘贴到另一个工作簿中。并且只需要在Excel中获取特定的单元格值。我实现了这一点,但只能粘贴到同一工作簿中的另一个工作表中。你能帮助我在粘贴数据到另一个工作簿上的一个特定的工作表,也应该粘贴的值在第二行,(即从第二行开始),因为第一行有标题在它。 源表标题: 项目阶段状态st Dt结束Dt预资源备注备注 Dest表标题: 现有代码:

  • 我试图复制并粘贴一个范围,从Sheet1 B4:E到一个新的目标范围,从Sheet2 B4:E到一个非空行,因为我在Sheet2的F列中也有一个公式 我当前使用的脚本将只粘贴到下一个可用的空行,但由于F列中有一个公式,它将在Sheet2的最底部粘贴源范围。(因为脚本将F中的公式视为非空行) 有没有办法复制一个范围并将其粘贴到另一个工作表上的特定范围,同时不覆盖任何数据,如果再次运行? 我写了2个脚

  • > sheet1:用户单击运行VBA的按钮。 第2:VBA选择第D列上的第一个非空白单元格 Range(“d”&rows.count).end(xlUp).offsed(1).select 多谢!