2012-09-09 105 views
6

这应该是非常简单的,但我一直在拖网论坛和SO几个小时的答案找到没有运气的答案,所以我(勉强)创建一个我自己的问题。复制范围和粘贴到新的工作簿

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

我原来的工作簿,让我们打电话给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’
  • 显式引用复制范围,包括工作簿和纸基准
  • 首先创建新的工作簿,则执行与c opy,然后重新激活新的工作簿并粘贴

上述解决方案都无效......在此阶段的任何智慧都会被感激地接收!

回答

16

这是你正在尝试?我已经评论了代码,以便在理解代码的功能时不会有任何问题。

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 
3

这适用于我。

Private Sub CommandButton1_Click() 
Dim newWB As Workbook, currentWB As Workbook 
Dim newS As Worksheet, currentS As Worksheet 

'Copy the data you need 
Set currentWB = ThisWorkbook 
Set currentS = currentWB .Sheets("Sheet1") 
currentS .Range("A:M").Select 
Selection.Copy 

'Create a new file that will receive the data 
Set newWB = Workbooks.Add 
    With newWB 
     Set newS = newWB.Sheets("Sheet1") 
     newS.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ 
     SkipBlanks:=False, Transpose:=False 
     'Save in CSV 
     Application.DisplayAlerts = False 
     .SaveAs Filename:="C:\Temporary.csv", FileFormat:=xlCSV 
     Application.DisplayAlerts = True 
    End With 
End Sub 
相关问题