MATLAB Answers

別のプログラムでOL​Eの操作が完了するま​で待機を続けます"の​エラーが発生するのは​なぜですか?

350 ビュー (過去 30 日間)
Excel VBAマクロで Excel Link の関数を使用しています。MLEVALSTRING関数で 実行時間が長いMATLAB 関数を実行すると、Excel で、以下のメッセージのダイアログが表示されます。
(エラーメッセージ)
別のプログラムで OLE の操作が完了するまで待機を続けます。
ダイアログ上の[OK]ボタンを選択しても、時間が経過すると、また同じダイアログが表示されます。アプリケーションの使用を継続するには、MATLABの処理が終了するまで、ダイアログが表示される度に [OK]ボタンを選択しなければいけません。

採用された回答

MathWorks Support Team
MathWorks Support Team 2018 年 6 月 15 日
これは、MATLAB の処理が非常に長い場合に想定される動作で、COM Automation の呼びだしが、Excel のタイムアウトを超えた場合に発生します。
もし、処理が1,2分以上かかるものでない場合は、INPUT関数やキー入力などのユーザ入力待ちの処理が含まれていないか、確認してください。
処理が1,2分以上かかると想定される場合は、以下の手順で Excel の警告を無効にすることができます。
1. 1回の MLEvalString の呼びだしに対する警告を無効にするには、以下のようなマクロを書き、Application.DisplayAlerts を設定します。
Sub runLongOperation()
Application.DisplayAlerts = False
MLEvalString ("myLongOperation")
Application.DisplayAlerts = True
End Sub
ここで、 "myLongOperation"が MATLABの実行関数です。
2. Excel2000よりも古いバージョンをご利用の場合は、DisplayAlerts の設定を個別に設定できないため、以下の記述で全ての警告をオフにします。
Sub nomorewait()
Application.DisplayAlerts = False
End Sub
この方法では、例えば、データを失う動作が発生した場合でも、警告が表示されなくなりますので、ご注意ください。

その他の回答 (0 件)

製品


リリース

R13SP1

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!