2017-02-23 15 views
0

範囲(A3)から各ブックのテーブルの最後まで複数のシートをコピーしたいので、次のコードを使用しましたが、シート全体がコピーされます。vbaを使用してセルの範囲を新しいワークブックにコピーする

Private Sub Copytonewworkbook_Click() 
Dim NewName As String 
Dim nm As name 
Dim ws As Worksheet 

If MsgBox("Copy specific sheets to a new workbook" & vbCr & _ 
"New sheets will be pasted" , vbYesNo, "NewCopy") = vbNo Then 
Exit Sub 
With Application 
.ScreenUpdating = False 
On Error GoTo ErrCatcher 
Sheets(Array("Payroll", " Bank Letter")).Copy 
On Error Resume Next 
For Each ws In ActiveWorkbook.Worksheets 
    ws.Cells(3,33)Paste:=xlCellTypeFormulas 
    Application.CutCopyMode = False 
    Cells(1, 1).Select 
    ws.Activate 
    Next ws 
    Cells(1, 1).Select 
    For Each nm In ActiveWorkbook.Names 
    nm.Delete 
    Next nm 
    NewName = InputBox("Please Specify the name of your new workbook", "New Copy") 
    ActiveWorkbook.SaveCopyAs ThisWorkbook.Path & "\" & NewName & ".xls" 
    ActiveWorkbook.Close SaveChanges:=False 
    .ScreenUpdating = True 
    End With 
    Exit Sub 
    ErrCatcher: 
    MsgBox "Specified sheets do not exist within this workbook" 
    End Sub 

答えて

0

これはそれを行うための可能な方法である(それはコピーを使用しないよう、少し進んだが、それは値を取得します):

Public Sub CopyMe() 

    Dim lLastRow As Long 
    Dim rngToCopy As Range 
    Dim shtTarget As Worksheet 

    With ActiveSheet 
     lLastRow = .Cells(.Rows.Count, 1).End(xlUp).row 
     Set rngToCopy = .Rows("3:" & lLastRow) 
    End With 

    Set shtTarget = ActiveWorkbook.Worksheets("Report") 

    shtTarget.Rows("1:" & rngToCopy.Rows.Count).value = rngToCopy.value 

End Sub 

あなたは三からに行をコピーしますアクティベートシートの最初の列の最後の値をReportという名前のシートに置き換えます。

追加:あなたはこのようにそれを行うことができますしようとせずにその場で 、:

Sheets(Array("Payroll", " Bank Letter")).Copy 
On Error Resume Next 
For Each ws In ActiveWorkbook.Worksheets 
    ws.Paste:=xlCellTypeFormulas 
    WS.ROWS("1:3").Clear 
+0

おかげVityata、同じワークブックの準備シートにコピーし、この良い方法が、何私がやりたいことはあります(ws.Cells(3,33)Paste:= xlCellTypeFormulas) –

+0

@NabilAmer - 参照してください。このコードでは、特定の範囲にある複数のシートを新しいブックにコピーします。版。一般的には、よりスマートな方法がありますが、コード全体を変更する必要があります。実際には15分の仕事です。 – Vityata

+0

可能であれば、私のコードに変更を加えてください –

関連する問題