EXCEL VBAでシートをコピーするマクロを作成しているのですが、【10】にて時々エラーが発生してしまいます。100シート分ぐらいをコピーしたいのですが、途中で30シートぐらいの所で止まってしまいます。
(シートが10前後だと問題なく処理が終ります)
止まってしまうシートはまちまちなので、
シート名称が問題だとは考えにくいです。
ちなみに【8】でのsheets_nameは取得できてます。
前後に何かを入れることにより解決するのか、
ソース本体をいじれば解決するのか、
詳しい方、何卒、解決方法を
ご指導いただけますよう宜しくお願いします。
【1】 '取得した配列の数だけループを行う。
【2】 For i = LBound(test) To 配列数 - 1
【3】
【4】 列番号 = Mid(test(i), 4, 3)
【5】 Debug.Print "test(" & i; ") : " & test(i)
【6】
【7】 'FORMATシートをコピーし、その名称を変数名にする
【8】 sheets_name = Worksheets("実績").Cells(18, 列番号).Value
【9】
【10】 Worksheets("FORMAT").Copy After:=Sheets("FORMAT")
【11】
【12】 ActiveSheet.Name = (sheets_name)
【13】 Cells(4, 3) = (sheets_name)
No.3ベストアンサー
- 回答日時:
コードとしては下記と等価だと思います。
空のシートでやってみると、スムーズにうまく行きました。
下記のシートSheet1のデータ・関数式他メモリの使用状況によるのではないでしょうか。
コピーの終了を見届けて、次のループに入ればよいのかもしれませんが、可能か、どうすればよいか方法が私にはわかりません。
Sub test02()
For i = 1 To 100
sheets_name = i
Worksheets("Sheet1").Copy After:=Sheets("sheet1")
ActiveSheet.Name = sheets_name
Next i
End Sub
エクセル2002でXP標準メモリ容量程度です。
No.4
- 回答日時:
こんばんは。
シートコピーは、無限にできるわけでもないので、
>途中で30シートぐらいの所で止まってしまいます。
このぐらいが、常識的な限度だと私は思います。ワークシートの内容量にもよりますが、この常識的な量は超えないほうが安全だと思います。実験的には、何百シートができるだとしても、私は、量が増える可能性がある場合は、ブックで分散して、それを参照設定でつないでいます。
No.2
- 回答日時:
この質問は非常に参考になりました。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1685998
このサイトでの事前の調べが足りなかったです(反省)
ありがとうございました。
解決に繋がりそうです。
No.1
- 回答日時:
こんにちは。
KenKen_SP です。自信なしですが、、、
「たまにうまくいかない」ということですね?
連続コピーで Excel がビジーになり、処理が追いつかないのではないか
と推測します。適度にウェイトしてみてはどうでしょうか?
標準モジュールの先頭に以下の API 関数を貼り付けます。
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
それから、ご提示のコードを次を追加します。
Worksheets("FORMAT").Copy After:=Sheets("FORMAT")
Sleep 500 '<-- 追加:500ミリ秒のウェイト(任意)
DoEvents '<-- 追加:制御を一瞬 OS に渡します
KenKen_SPさん、
ありがとうございました。
早速、試してみます。
ウェイトをどうさせたらいいのかな~?
と思っていたのでズバリでした。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Visual Basic(VBA) 最終行の指定について教えてください。 複数シートを1シートへまとめる下記マクロでは各シートの6行目を 1 2022/10/04 18:37
- Excel(エクセル) 複数のブックをひとつのブック(複数のシートにまとめる)場合にシートとの順番について 5 2022/12/28 20:47
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
- Visual Basic(VBA) 別ブックからシートのコピー 3 2022/04/01 20:07
- Visual Basic(VBA) VBAで、シート間の転記するコードをFOR~NEXTで教えてください。 9 2023/04/30 20:04
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
エクセルでコピーができなくなる
Visual Basic(VBA)
-
エクセル マクロ実行時エラー’1004’
Excel(エクセル)
-
-
4
worksheetクラスのcopyメソッドが失敗しました。
その他(Microsoft Office)
-
5
ExcelでVBAを使用した際に、『パス名が無効です』とエラーになります。
Excel(エクセル)
-
6
マクロでのシートコピー数制限?
Excel(エクセル)
-
7
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
8
「パス名が無効です」と表示されて実行出来ません
その他(ソフトウェア)
-
9
マクロを実行するとパス名が無効です
その他(Microsoft Office)
-
10
「パス名が無効です」の発生原因
Visual Basic(VBA)
-
11
EXCEL VBA シート追加時のエラーの回避方法について
Visual Basic(VBA)
-
12
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
13
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
14
エクセルのシート名変更で重複した時のvbaの処理
Visual Basic(VBA)
-
15
Rangeメソッドは失敗しました。globalオブジェクトについて
Excel(エクセル)
-
16
VBAでの結合セルのコピー&ペースト
Excel(エクセル)
-
17
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
18
Excelの中のsheetをコピーできない
その他(Microsoft Office)
-
19
VBAでシートコピー後、シート名が重複している時の処理
Access(アクセス)
-
20
VBAで Set wb = Sheets(1).Copyができないわけ?
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 関数を使ってデータと一...
-
エクセルの選択範囲以外を削除...
-
EXCELで別のブックから式をコピ...
-
【VBA】コピー&複数個所のペー...
-
【Excel】数式をそのまま他のシ...
-
EXCELのVBAでシートコピーをし...
-
Excelの行をコピーして貼り付け...
-
Excel シート複数 金額日計表と...
-
Excel シートに別のExcelシート...
-
Excel シートのコピーの際、ペ...
-
PDFファイルをコピーしてエクセ...
-
【エクセル】プルダウン設定の...
-
シートのコピーでリンク先をコ...
-
【VBA】コピー&複数個所のペー...
-
Excel 数式の保護をしたセルを...
-
シートが保護されていないのに...
-
エクセルのシートコピーした際...
-
VBA シートをコピー後、ボタン...
-
Excel VBA 複数シートを別ファ...
-
ExcelVBAで、ユーザーフォーム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
EXCELのVBAでシートコピーをし...
-
EXCELで別のブックから式をコピ...
-
【Excel】数式をそのまま他のシ...
-
【VBA】コピー&複数個所のペー...
-
Excelの行をコピーして貼り付け...
-
【エクセル】プルダウン設定の...
-
エクセルのワークシートをUSBメ...
-
Excel シートのコピーの際、ペ...
-
エクセルの1シートの内容を複...
-
エクセルVBA 1行飛ばしで転記す...
-
【Excel VBA】シートコピー時、...
-
エクセルシートを別のエクセル...
-
ExcelVBAで、ユーザーフォーム...
-
エクセルでシートを「移動また...
-
Excel シートに別のExcelシート...
-
Excel 数式の保護をしたセルを...
-
EXCEL2007でシートをコピーする...
-
シートが保護されていないのに...
おすすめ情報