【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

こんにちは!
VBAにて連番のシートを作成するマクロを組みました
1日→2日→3日・・・→60日
Sub シートコピー()
Dim i As Integer, wst As Worksheet
Set wst = Worksheets("コピー元")
For i = 1 To 60
wst.Copy After:=Worksheets(i + 2)
Worksheets(i + 3).Name = i & "日"
Next
Set wst = Nothing
End Sub
54日まで作ることは出来たのですが、なぜか55日からが作成できません
その後シートを消し、もう一度実行すると、1枚もシートが作れません
この現象は何でしょうか?
また、どうやれば60枚分コピーできるでしょうか?

A 回答 (4件)

エクセルで使用できるメモリ容量によって制限が決まります。



シートのコピーを挿入するのではなくて、新規シート挿入後にコピーするように変えると数百枚はいけるはずです。
http://oshiete1.goo.ne.jp/qa1822561.html
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
参考になります!

お礼日時:2007/02/10 13:20

こんにちは。



中身の入ったシートの60枚分のコピーはかなり難しいとしか言いようがありません。また、PCのスペックとシステムのスタックメモリ(仮想メモリ)は、直接的な関係がありません。

あえて行うなら、空のシートを増やしていって、その後で、コピー元をコピーしていけば出来るかもしれません。

#3 のhana-hana3 さんが書いているイメージとは違うかもしれませんが、こんな風にしてみたら、どうかしら?省メモリに徹したつもり...

Sample:

Sub SheetCopy2()
 Dim ws As Range
 Application.ScreenUpdating = False
 Worksheets.Add After:=Worksheets(3), Count:=60
 Set ws = Worksheets("コピー元").UsedRange
 For i = 1 To 60
  Worksheets(i + 3).Name = (i) & "日"
  ws.Copy Worksheets(i + 3).Range("A1")
 Next i
 Set ws = Nothing
 Application.ScreenUpdating = True
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
参考になります!

お礼日時:2007/02/10 13:20

まず、手動でコピーを追加できるか?お試しください。


出来ない場合はエクセルで使用できるメモリの限界なので
ご使用のPCのスペックをあげるしかありません。

エクセルの仕様
http://office.microsoft.com/ja-jp/excel/HP051992 …
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
参考になります!

お礼日時:2007/02/10 13:21

おかしいですね、ソースは間違ってないようで確認すると


私のExcelでは正常に60日までできましたよ。
Excel2000で新規で開き(このときsheetは3枚のみ)sheet1を”コピー元”としてマクロ実行しました。

x日シート以外にも大量にシートがあって上限(あるのかな?)を超えたとかですかね?
    • good
    • 0
この回答へのお礼

そうですか・・・2台のPCで試してみて同じ結果になったので、不安になっていました
上限があるのかもしれないですね

お礼日時:2007/02/10 13:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!