• 締切済み

マクロでのシートコピー数制限?

エクセルでマクロを使いシートをコピーしようと思っています。以下のようなマクロを作ったのですが、シートを12、3回コピーするとそれ以後、全てのシートでシートのコピーが出来なくなります。 何らかの制限でもあるのでしょうか? 分かる方がいらっしゃいましたら教えてください。 Dim Check, Counter Check = True: Counter = 0 b = 31 'シート の名前 Do While Counter < 15 Sheets("原本").Select Sheets("原本").Copy Before:=Sheets(2) Sheets("原本 (2)").Select Sheets("原本 (2)").Name = b b = b - 1 Counter = Counter + 1 Loop (マクロの知識が余りありませんので不細工なのはご容赦下さい)

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 すごく、凝った作りのマクロですが、15回になったら、それで終了するようになっていますが、なぜ、そのような設定になっているのでしょうか? それから、 Sheets("原本").Copy Before:=Sheets(2) 'とすれば、そこは、ActiveSheet になりますから、Selectは必要なく、 'ActiveSheet.Name = ●● で名前は付けられます。 私のサンプルです。 なぜ、 "Counter < 15" になっているのか考えて、もしも、既に作られているシートがあるからではないかと考えました。そのためのチェックルーチンをおきました。 '<標準モジュールに設定してください> Sub SheetCopies()  'シートを1~31 まで作るマクロ   Dim Counter As Integer   Dim SheetCounter As Integer   Dim Check As Boolean   Dim dummy As Variant   Const MaxSheetCounter As Integer = 31 'シート の名前  '必要だったら、サブルーチンに飛ぶ  'Call SheetAlignment   SheetCounter = 1   Application.ScreenUpdating = False   Do While SheetCounter <= MaxSheetCounter    '既に作られているかもしれないためのルーチン    On Error Resume Next    dummy = Sheets(CStr(SheetCounter)).Name    If Err.Number > 0 Then Check = True    On Error GoTo 0    If Check Then      Sheets("原本").Copy After:=Sheets(Sheets.Count)      ActiveSheet.Name = CStr(SheetCounter)    End If    SheetCounter = SheetCounter + 1    Check = False   Loop   Application.ScreenUpdating = True End Sub Private Sub SheetAlignment() 'シートを原本のみにするマクロ Dim sh As Worksheet  For Each sh In Sheets   If Sheets("原本").Name <> sh.Name Then   Application.DisplayAlerts = False    sh.Delete   Application.DisplayAlerts = True   End If  Next sh End Sub なお、あまり、このマクロを何度も繰り返しますと、メモリの消費でエラーを起こすことがあるかもしれません。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

excelのシートの仕様やメモリ仕様の関係で制限が出るようです。 コピー方法を変えると数百枚は可能かと思います。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1685998

関連するQ&A

専門家に質問してみよう