2

ワークシートの完全なコピーを作成する例をいくつか見てきましたが、どれもうまくいきません。私の場合、シートは新しいワークブックに移動する必要があります。私の実際のコードでは、 wb はグローバルに定義されており、ワークブックはこれを呼び出した別のサブで作成されます。

  Dim wb As Workbook
  Set wb = Workbooks.Add()
  Dim newtab as Worksheet

  With ActiveWorkbook
   .Sheets("Sample Attendance").Copy After:=wb.Sheets(.Sheets.Count)
   Set newtab = wb.Sheets(wb.Sheets.Count - 1)
  End With

うまくいきませんでした。

同じく

  ActiveWorkbook.Sheets("Sample Attendance").Copy After:=wb.Sheets(1)
  Set newtab = wb.Sheets("Sample Attendance")
  newtab.Name = tabname

どちらのメソッドも、Copy ステートメントの後に戻ります。

私はこれで適度に成功しました:

  Set newtab = wb.Worksheets.Add
  newtab.Name = tabname
  Set Attendance = ThisWorkbook.Sheets("Sample Attendance")
  Attendance.Range("A:BB").Copy Destination:=newtab.Cells(1, 1)

動作します。しかし、その後、すべての PageSetup をコピーする必要があります。

4

2 に答える 2

3

最初のコードに 2 つの問題があります...

  1. を使用してActiveworkbookいます。新しいワークブックを追加すると、新しいワークブックがアクティブなワークブックになります:)

  2. 2 番目の問題は、 の前の DOT.Sheets.Countですwb.Sheets(.Sheets.Count)。コピーしているワークブックからカウントを選択するのはなぜですか?

これを試して

Sub Sample()
    Dim thiswb As Workbook, wb As Workbook
    Dim newtab As Worksheet

    Set thiswb = ThisWorkbook
    Set wb = Workbooks.Add()

    With thiswb
        .Sheets("Sample Attendance").Copy After:=wb.Sheets(wb.Sheets.Count)
        Set newtab = wb.Sheets(wb.Sheets.Count - 1)
    End With
End Sub
于 2013-09-13T20:20:59.240 に答える