Excelのマクロが実行途中に止まる






Excelのマクロが実行途中に止まる障害が発生した。

処理はそんなに複雑ではない
  1. 複数のExcelブックを読み込み、ブック内にシートを追加作成しコピーする
    読み込んだブックの数だけシートが追加される。

  2. 読込んだシートは集計シートから式で参照されている(Sheet!A1 こんな感じで)

  3. 再実行の処理
    読み込んだブックと追加作成するシートは一意に決まっており
    既に同じシートが存在する場合はシートをいったん削除後に 上記 1.から実行

このような処理でブックを4つほど処理すると下のエラーが表示され、Excelが勝手に終了してしまう。

Microsoft Excelは動作を停止しました


このエラーが出ると実行途中のデータは保存されない。
また、他で開いていたExcelも道連れに亡くなってしまう。

それと、この障害、利用するパソコンにより発生したりしなかったりする。
私が動作確認したパソコンはほとんど発生しないが
他の人のパソコンではほぼ100%発生するのだ。

マクロ中に
DoEvents()
を適当に入れても改善しない。

結構、ハマってしまった。

Google先生に聞いてみてもいいアドバイスは得られなかった。

■解決方法
上記 3.の再実行した場合の処理を見直した。

既に同じシートが存在する場合はシートをいったん削除していたが。
これがまずかったようだ。

他のシートが参照しているシートを削除する場合
Excelにとってはかなりつらい処理の様に思われる。
Excel「もう、やっていけない。止めるよ!」

誤って参照されているシートを削除すると残ったシートには
#REF!
が表示されます。今回はこの「#REF!」の数がかなりありました。

そこで、シートの削除は行わず、ブックのデータだけを書き換えるように変更しました。

これで、他のパソコンでも
「Microsoft Excelは動作を停止しました」
は表示されず、処理が完了するようになりました。

解決策を実施する前も後も結果のブックを見ると同じなのですが
Excelの事を考えると
シートの削除よりはデータの書き換えの方が楽なのかも知れません。

今回のマクロのコードを作っている時は少しでもコードが少なくなるように考え、シートの削除を行ってしまいましたが、
シートの削除時のExcelの負荷(動作)を考えるとデータの書き換えの方が正解だったようです。
スポンサーサイト

コメントの投稿

非公開コメント

アクセスカウンタ
オンラインカウンター
現在の閲覧者数:
プロフィール

たっきー

Author:たっきー
たっきーのブログへようこそ!
パソコン・スマホを
より使いやすくするため奮闘中!
改造したり、root取ったり
色々やってます。

カテゴリ
最新記事
最新コメント
月別アーカイブ
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR