2012-09-09 17 views
6

これは本当にシンプルなはずですが、私はトロールフォーラムを行っていますので、何時でも答えが見つからないので、自分の質問を作成しています。範囲をコピーして新しいワークブックに貼り付けよう

私がしようとしているのは、単に新しいブックを作成し、そのブックに別のブックの範囲を貼り付けるだけです。シンプルな音..?

私の元のブックは、Book1に電話しましょう。私は、セルA1:B10のの値をコピーする新しいブック、Book2を作成しようとしています。

はここ(オープンBOOK1で始まる)私のコードのいずれかのバージョンです:

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を行う次に、最初の新しいブックを作成新しいブックを再度アクティブにして貼り付ける前に、新しいブックを貼り付けて貼り付けます。

上記の解決策はありません...この段階でどのような知恵に感謝しますか?

答えて

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 
関連する問題