Excel 2010 において連続したマクロ処理の実行後の Workbooks.Open メソッドが失敗する場合がある

現象
Excel 2010 において、以下の条件を満たした状態で Workbooks.Open メソッドを実行すると、エラー番号 1004 の「アプリケーション定義またはオブジェクト定義のエラーです。」といったエラーが発生することがあります。

  • Workbooks.Open メソッドで開こうとしているファイルが .xls 形式
  • Workbooks.Open メソッド実行前に、セルのコピー等、クリップボードに関する処理を含むループ処理を連続で行う
  • Workbooks.Open メソッド実行前に DoEvents 関数の呼び出しが存在しない
  • クリップボードを監視し、データが変わった時にそのデータを取得する外部プログラムが存在する

原因
Excel 2010 ではクリップボードへのデータ格納の際、遅延レンダリングを行っています。
そのため、外部プログラムからクリップボード データへの参照が行われた場合に、クリップボードへデータを設定することを要求するウィンドウ メッセージを受け取ります。

しかし、Workbooks.Open メソッド実行前にループでクリップボードに関する処理を行うものの、そのウィンドウ メッセージを処理していない場合、Workbooks.Open メソッドの処理中に予期しないタイミングでクリップボードの処理が割り込むことがあります。

この割り込みタイミングによっては、Excel 2010 で想定しない状態となり、Workbooks.Open メソッドが失敗します。
回避策
Workbooks.Open メソッドの実行前に DoEvents 関数を実行するか、もしくは Workbooks.Open メソッドの実行を再試行します。
状況
マイクロソフトでは、この問題について現在調査中です。詳細については、わかりしだいこの資料に掲載する予定です。
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2701220 - 最終更新日: 04/12/2012 05:05:00 - リビジョン: 1.0

Microsoft Excel 2010

  • KB2701220
フィードバック