『別のプログラムでのOLEの操作が完了するまで待機します』
せっかくのエクセルを保存しようとボタンを押したら、軽快な音とともに謎のポップアップ画面がでてきて、押せども待てども一向に終わる気配がなく、無限ループの原因不明で泣き寝入り。
そんな罠にかかってしまったので、なぜこんなことが起きているのか、そもそもOLEとは何か(用語がまた難しいんですよね・・・)。どういうことか、おそらく多くの人が同じ悩みに出会っていると思われたので、わかるように調べてみることにしました。
お仕事中の人が多いと思いますので、以下、サクサク行きたいと思います。
目次
英語では”Microsoft Excel is waiting for another application to complete an OLE action”
日本語を検索するより、悩んだら英語です
検索すると、マイクロソフトのコミュニティで以下のページがあります
かなりまとまっています。やるじゃねーか、マイクロソフト!と思ったのですが・・・ここにかいてあるのは、まず一つ目
- エクセルのOptionにいき、詳細設定の『DDEを使用する他のアプリケーションを無視する』をチェックする
・・・また、お得意のイミフですか。。
調べてみると、DDEとは『動的データ交換』で、例えば、エクセルの表をワードに貼っている場合、エクセルの表が更新されたら、ワードにあるその表も自動的に更新されるというもの
DDEとOLEの関係は、OLEがDDEよりも上位。つまり、アプリケーション間の通信としては、OLEのほうがDDEよりいろいろなことができるし、OLEの下位レイヤーはDDEで構成されている(そうな)ので、DDEを切ってしまえばアプリケーション間の通信がなくなるから、他のアプリケーションの作業を待つ必要がエクセルにはなくなりますよ、といいたいのだろう
いやー、、、そんな機能はまるで使っていない、そんな作業は全くしてないエクセルファイルなんですが。。。すくなくとも私はそういう作業をしていないので、これは関係ないと今は判断し、次
- エクセルのOptionにいき、アドインでエクセルのアドインを使えないようにする
これも統計を使う業務をやっている人は、ソルバーやら分析ツールを使うことはあるので、オンにしている人もいるのだろうけど、そんな機能とは無縁なファイルなので、これも関係なし、Next
- エクセルのワークブックをEmailに添付するオプションを使っている
・・・いや、全く使ってないです。ということで、原因は別にある様子。。。
最新のアップデートがされているか確認
となると、疑わしいのは『最新のアップデートがされていない』などのこちら側の不手際の可能性もあります。と思ってアップデートがちゃんとされているか確認したところ、されている。。。
ネットサーフィンをすると、PDFなどで問題が起きた場合は、最新版でないことが原因の可能性があるようですね。ただ、残念ながら私は違いました。
問題となっているエクセルシートをよく調査
そもそも、このエクセル、1シートに74万行を使っている上に、列数もあり、ファイルも計算はVBAでやって吐き出した数字の結果があるだけなので、純粋にデータの多さだけで、90Mもあるわけですが、それが原因なのかとも思いました。
ただ、それと、上の記載した『OLEオブジェクト』(例えば、ワードに入れられたエクセル表)は違います。仮に、VBAなどで処理が重い、タイムアウトになっているなどが原因なら、保存するときに、別のアプリケーションの作業は関係ないはずです。
ですので、もしかしたら、このエクセル内にOLEオブジェクトが何らかの形で残っているのではないかと疑ってみました。特にインプットシートを。。
つまり、このエクセルファイルの素データを作成している際に、違うアプリケーションで作られたものがこのファイル内に入ってしまっているのではないか
そしたら・・・あった。。。
なんか、透明かつ変なリンクもある形で、図形のデータがある。。。
もともとの作成者に話を聞いてみたら、ホームページを見ながらあれこれ作っていたとのことで、いろいろコピペしたりして、他のアプリケーションデータをエクセルシート内に残していた(無意識)んでしょうね。。。
その消し忘れだったんでしょう、これは。。
これを消した後は、今はファイルの重さが100M超えてますが、保存するときに『別のプログラムでOLEの操作が完了するまで待機をつづけます』は、今のところ無縁です。
もし、エクセルのシート内にそのような外部とリンクするようなものに心当たりがあったら、それを疑ってみると解決することがあります。是非、お試しください~