人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【ExcelVBA】知見の深い方にお尋ねします。
とあるシートをfor文を用いて100枚コピーするマクロを組んだのですが、実行中に、コピー何回目かで「実行時エラー’1004’: ’Copy’メソッドは失敗しました」というエラーが出てきます。なお、これが一回出るともう一度同じマクロを実行してもすぐに同様のエラーが出ます。しかし保存して再起動するとまたマクロを実行することが出来ますが、同じようにコピー何回目かでエラーが出ます。
このエラーメッセージで検索をかけても有効な対処法が見つからないので、どなたか教えてください。
似たような事例:http://www.max.hi-ho.ne.jp/cgi-bin/user/happy/wforum.cgi?no=2462&reno=no&oya=2462&mode=msgview&page=0
なお、シート内のセルのコピーではなく、シートそのもののコピーをしたいのです。
回答は当該現象をご存知or確認できた方からの確実な情報を希望します。

●質問者: sexysaitama
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:とある エラー エラーメッセージ コピー セル
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● SigZ
●10ポイント

http://www1.harenet.ne.jp/cgi-bin/cgiwrap/unaap/bbs2/bbsdsp_...

CGIWrap Error: User not found

Excel2000で似たような現象を経験したことがあって、参照URLのように sheet の copy によってSheet名が sheet1111... となってしまうのが原因でした。

ご参考まで。

◎質問者からの返答

参考情報は必要ではありません。

要件に沿った回答をお願いします。

なお、シート名はコピーと同時に変えています。


2 ● きゃづみぃ
●0ポイント

http://www.kotaete-net.net/bbs04007.aspx?intDlgMode=1&strQA_...

答えてねっと - メンテナンス中 -

シート数はメモリによるようなので、メモリによってコピーできる数が決まるようです。

マシンのメモリを増やしてみたらいかがでしょうか?

◎質問者からの返答

あてずっぽうで回答はしないでください。確実な情報を希望しています。

様々なスペックのマシンで実験していますが、エラーの出るシートのコピー回数は同じです。

申し訳ないですが0ポイントです。


3 ● akibare
●10ポイント

http://support.microsoft.com/default.aspx?scid=kb;en-us;1691...

XL97: Run-Time Error in Macro Assigned to Control

Excelのバージョンおよびコードを見せていただければより助かりますが。。

(1)Excel97で、ボタンなどのコントロールからマクロをキックしている場合はフォーカスをはずすと良いそうです。

http://support.microsoft.com/default.aspx?scid=kb;en-us;2106...

Copying worksheet programmatically causes run-time error 1004 in Excel

(2)Excel2000では、大量にコピーする場合は定期的に保存・閉じる・開くを実行することにより問題を回避できるそうです。

http://support.microsoft.com/search/default.aspx?query=Error...

Search The Knowledge Base

最後にMSのナレッジベースの検索結果(全部は見ていないので)

◎質問者からの返答

すみません、肝心のバージョンを書き忘れていました。

バージョンはexcel2003ですが、2002でも2000でも動くようにしたいです。

ソースは下記になります。

***************

For I = 2 To 17

Worksheets(”シート_1”).copy After:=Worksheets(Worksheets.Count)

ActiveSheet.Name = ”シート_” & I

Next I

****************

なぜかいつもコピー28回目で質問文に記載したエラーがおきます。

なお、コピー元のシートを編集して中身をいじると、エラーが出るまでのコピー回数が変わります。

途中の保存・再起動やセルのコピーといった代替手段を使いたくないのです。

よろしくお願いします。


4 ● akibare
●40ポイント

http://www.google.com.au/

Google

実験して再現しました。コピーした新しいシートの「後」にコピーを挿入するとエラーになるようです(なんとなくWorksheetsのインデックスがメモリー上更新されていないとかそんな感じ)。下記の通りにすれば問題は起きませんので試してみてください:

Sub CopySheets()

Dim ws, cp As Worksheet

Set ws = ActiveWorkbook.Worksheets(”Sheet1”)

For i = 1 To 200

ws.Copy After:=ws

ActiveSheet.Name = ”Copy” & (201 - i)

Next

End Sub

◎質問者からの返答

ありがとうございます。

実践してみたところ、33回目(以前より増えましたが)でやはり同じエラーが出てきてしまいました。デバッグでフォーカスされてるのは

ws.copy After:=ws

の部分でした。なんでだろう!?!


5 ● denbee
●10ポイント

http://www.hatena.ne.jp/

はてな

URLはダミーです。

当方の環境でも再現しました。

当初は発生しなかったのですが、シートにオブジェクトを増やしたところ問題文のエラーメッセージが出ました。

まずはオリジナルとなるシートのデータ量を減らすこと(セルのデータ、シート上のオブジェクト)、およびウィンドウズの仮想メモリなどの設定を見直すことをお勧めします。

◎質問者からの返答

シートの容量は減らせません。

頒布用のexcelブックなので、excel以外の設定を見直すことはできませんし、OSやバージョンに依存しない方法が知りたいです。

代替手段なしでお願いします。


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ