
VBAを使ってHFSSというソフトウェアを外部制御したいと考えています。
そのソフトの起動&終了や図形の形状編集、各種形式のファイル出力といった軽い操作は難なく動作させる事が出来るのですが、数GBのメモリを使用するような重たい処理をさせたりすると「別のプログラムでOLEの操作が完了するまで待機を続けます。」といったメッセージがVBA側に表示される事があり、その時点でFor文が途中で止まってしまい困っています。どうすればよろしいでしょうか?
なお、そのソフトウェア側で重たい処理が終了したのちに手動で「OK」ボタンをクリックすると次の処理へ進ませる事は出来ます。ですので、上記エラーメッセージが表示されたら自動でOKを選択したり、On Error Resume Nextのような感じでエラーメッセージを無視出来るだけでも結構です。
No.1ベストアンサー
- 回答日時:
こんにちは。
話は簡単なのですが、解決は難しいです。
>「別のプログラムでOLEの操作が完了するまで待機を続けます。」
私の方も同様の問題でしたが、IE のアドオンのActiveX なので、私の状況とは違うようです。
本来は、マクロを使用するときに、OLEプログラムを外して動かせばよいのですが、たぶん、HFSS自体が、OLEで、Excelに繋がっているのでしょうね。
今回の原因は、OLE側の本体のソフトが終了する前に、マクロが終わろうとしてしまうということが原因です。それで、良くコードをごらんになって、「ソフトの起動&終了や図形の形状編集、各種形式のファイル出力」の、それぞれの作業の終わり目があるはすでず。その終わり目の前に、Wait を入れればよいのではないかと思います。
Application.Wait でも良いのですが、
負担の少ないAPIの
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'モジュールの最上に書く
で、適当の待ち時間を入れてあげればよいのではないか、と思います。
Call Sleep 1000 '1000/1000秒...1秒
状況からすると、1秒以上は掛かると思いますが……。
それから、
Application.ScreenUpdating = False 'や
Application.Calculation = xlCalculationManual '(<--> = xlCalculationAutomatic)
この二つぐらいが、効をそうするのではないかと思います。
また、On Error Resume Next などの、エラートラップは、あくまでも、VBA の内部の問題ですから、トラップには掛かりません。
ご回答頂きどうもありがとうございます。
WaitやApplication.ScreenUpdating = False、Application.Calculation = xlCalculationManualを全て試してみましたがダメでした。
しかし、頂いたアドバイスを元に、VBAで全てを操作する事を諦め、VBAを使っていったん複数のVBSを作っておいた上で、Shellを使ってそれぞれをMSDOS経由でVBSを実行させてみた所、意図した通りの動作をさせる事が出来ました。本当にどうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
特定のエクセルファイルが止まってしまう
Excel(エクセル)
-
「ほかのアプリケーションを無視する」オプションの存在目的は?
Excel(エクセル)
-
-
4
Excel VBAからAccessマクロを実行したい
Visual Basic(VBA)
-
5
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
6
VBAのテキストフォームの折り返しについて
Visual Basic(VBA)
-
7
配列の値を置換するにはどうすればいいでしょう?
Excel(エクセル)
-
8
データベースの最適化をマクロでしたい
その他(データベース)
-
9
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
10
【マクロ】PasteSpecialメソッドにて、コードが動かない理由が分かりません
Excel(エクセル)
-
11
vba クリップボードクリアについて教えてください
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Susieで画像が表示されません
-
解凍後の.zipファイルは消して...
-
先日ぬきたし2を購入したのです...
-
Geek Uninstaller と Revo Unin...
-
dskファイルについて教えてくだ...
-
誤ってAdobe ReaderでZIPファ...
-
GoogleからPDFから資料をダウン...
-
CドライブのAPSETUPフォルダは...
-
アンインストールする前にファ...
-
VCSファイルをCSVファイル に変...
-
ファイルの関連付けを変更する...
-
MATXのダウンロード方法
-
重大なエラー
-
.pubファイルはどうやって開くの?
-
ボイスレコーダーの不要な録音...
-
MozillaThunderbirdでごみ箱か...
-
ソフトを起動するとエラーがで...
-
フォルダアイコンの変更でpngを...
-
Msgsrv32[応答なし]って
-
アプリケーション ハングの回...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA「別のプログラムでOLEの操...
-
Susieで画像が表示されません
-
realsyncで「"は整数ではありま...
-
トロイの木馬?について
-
音楽CDを焼いている途中で、”転...
-
フォトショップの強制終了
-
モジュールのページ違反ってな...
-
Roxio Creator操作中のRuntime ...
-
ファイルメーカーによる勤務時...
-
Microsoft Visual C++ Runtime ...
-
McAfee Online Backup 削除
-
norton systemworks 2002 speed...
-
Mp3tag内のDiscogsサーバー接続...
-
IEで、「問題が発生したため...
-
解凍後の.zipファイルは消して...
-
Geek Uninstaller と Revo Unin...
-
【初心者です】izhというファイ...
-
VCSファイルをCSVファイル に変...
-
拡張子をtxtからdatに
-
誤ってAdobe ReaderでZIPファ...
おすすめ情報