エクセルでマクロを使いシートをコピーしようと思っています。以下のようなマクロを作ったのですが、シートを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
(マクロの知識が余りありませんので不細工なのはご容赦下さい)
A 回答 (2件)
- 最新から表示
- 回答順に表示
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
なお、あまり、このマクロを何度も繰り返しますと、メモリの消費でエラーを起こすことがあるかもしれません。
No.1
- 回答日時:
excelのシートの仕様やメモリ仕様の関係で制限が出るようです。
コピー方法を変えると数百枚は可能かと思います。
参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=1685998
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Visual Basic(VBA) 最終行の指定について教えてください。 複数シートを1シートへまとめる下記マクロでは各シートの6行目を 1 2022/10/04 18:37
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) 別ブックからシートのコピー 3 2022/04/01 20:07
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/03/25 08:33
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
エクセルでシートの並び替えで...
-
メッセージボックスでシート名...
-
マクロを複数シートに実行する...
-
エクセル・複数のシートを一度...
-
エクセルを開いたとき常に同じ...
-
複数シートの保護・解除
-
エクセルで回数をカウントする...
-
EXCELの起動時に常に同じ...
-
VBA シート名を先月の名前に...
-
VBAで条件によってシート見出し...
-
【 Excel】シートの見出しに自...
-
エクセルのチェックボックス
-
マクロを特定の複数シートで実...
-
エクセルVBAでcmbBoxのプロパテ...
-
EXCELでワークシートを開いたら...
-
マクロでのシートコピー数制限?
-
エクセルの複数のワークシート...
-
Excelで,特定のシートを開いた...
-
エクセルで、マクロボタンの表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロを複数シートに実行する...
-
コマンドボタンがデザインモー...
-
【 Excel】シートの見出しに自...
-
エクセルでシートの並び替えで...
-
エクセルを開いたとき常に同じ...
-
マクロを特定の複数シートで実...
-
EXCELのエラー
-
VBAで条件によってシート見出し...
-
VBA シート名を先月の名前に...
-
EXCELでワークシートを開いたら...
-
エクセルの複数のワークシート...
-
EXCELでマクロを使わずに図形の...
-
Excelのマクロの呼び出し元を知...
-
複数シートの保護・解除
-
エクセルで回数をカウントする...
-
EXCELの起動時に常に同じ...
-
エクセルで複数のSheetを一括フ...
-
エクセルで、マクロボタンの表...
-
エクセルVBAでcmbBoxのプロパテ...
-
マクロ 各シートの決められた位...
おすすめ情報