98SE上でExcel97を使用しています。
クエリーで、あちこちのデータベースからデータを取込み、突合せを行って、要素を絞って行くマクロを作成しています。
手作業で順番に行う分には問題なく、マクロをデータ収集毎に分けて実行しても問題ないのですが、マクロを繋げて一気に実行させると、必ず3つめのデータベースからの収集に入った時点で、ダンマリ状態になってしまいます。
「アプリケーションの強制終了」の表示では、「応答なし」には、なってはいませんが、終了を選択すると、「返事がない」旨のダイアログが出てしまいます。
どのPCから実行しても同様です。
これは、実装メモリ等の問題なのでしょうか、それともマクロの組み方で回避できる問題なのでしょうか。
ちなみに、試したPCのメモリはいずれも256MBでした。
何かわかる方がいらしたら、お知恵を拝借したいと思います。
No.2
- 回答日時:
黙ったまんまになってしまうのは、Excel自体のバグかもしれないと思うのですが、そういったバグを私は知りません。
ただ、マクロをつなげて実行すると、マクロの性質にもよりますが、マクロ1が終わってからマクロ2に移るというようには処理されず、同時に処理が実行されることがあります。マルチタスクですからね。
その結果、同時に同じファイルやシートにアクセスしてしまい、終了条件が立たず、帰ってこないなんてことも起こり得ます。
マクロの詳細が不明ですので、はっきりしませんが、そういったことも考えられます。
この回答への補足
勝手ながら、同一の問題点を突いていただいている様ですので、No3のhappypointさんの補足欄に集約させていただきました。引き続きよろしくお願いします。
補足日時:2003/06/24 10:14No.3
- 回答日時:
こんにちは。
#2さんのご指摘の中にもあるとおりですが、
たとえば外部のアプリケーションを起動したりする操作の場合などのように、
「非同期処理」といって、ひとつの処理がすべて終了しないうちに、次の処理へ進んでしまう場合があります。
このような場合、ひとつひとつの処理を別々に実行した場合は正常に実行されるのに、
複数の処理を続けて実行すると、想定外の結果となってしまう、という現象が発生することがあります。
これを避けるには、同期的な処理(ひとつの処理が終わるまで実行をウエイトする)を行う必要があります。
この回答への補足
各データベースへのアクセスには、時間のかかる場合もあり、お二方のご指摘の通り、先のアクセス中に次のプロセスに移っていたりする可能性は大だと思われます。
ただ、指定処理日によって、各データベースから転送されるデータサイズも異なり、他のアプリケーションからのアクセス量の関係もあって、その処理時間は不定です。
このような場合、ポイントポイントで、処理の足並みを揃えるには、どのような方法がベストであるか、ご指導いただければ幸いです。
No.4ベストアンサー
- 回答日時:
#2です。
適当なグローバル変数(例えばDone1など)をBooleanで定義してフラグのように使い、処理中はFalse、処理終了時にTrueを代入するようにプログラムを組みます。それぞれの処理の先頭で、そのフラグをチェックして、実行中(この場合、False)は処理しないというようにすればいいでしょう。
おかげさまをもちまして、問題の無返答の部分は、無事に解決したようです。(動いたとたん、全く別の自己バグが発見されましたが)
とにかく、これで先に進めます。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel起動時にエラーダイアログが表示される 3 2022/07/28 19:52
- Excel(エクセル) excelのマクロ実行でブロックされます。 2 2022/06/08 09:14
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/11 11:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 6 2023/03/03 18:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 2 2023/03/02 18:54
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Word(ワード) Word 2016のマクロを Word 2021のWordでキー動作させたい 3 2023/04/12 16:14
- Excel(エクセル) Excel使用前提 同じフォルダ内にあるファイルの集約等をマクロでできますか 4 2022/09/06 19:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
IF文に時間(何時から何時ま...
-
特定の名前のオートシェイプの...
-
vbaのエラー対応(実行時エラー...
-
【Vb.net】プリンタジョブの取得
-
マクロで、次のコードへ行く前...
-
COBOL OCCURSで指定したデータ...
-
【VBA】エラー処理で別プロシー...
-
シグナル 6(SIGABRT)とは?
-
RaiseEventのメリット
-
エクセルVBAでロックをかけたい
-
ExcelのVBAで、選択したファイ...
-
エクセル画面のちらつきなくす...
-
VBAでBook読み込み時の非表示方...
-
C# 指定時間(秒間)の間処理を...
-
ドリブン??
-
VB6.0で、ランタイムエラーを全...
-
VB6にてネットワーク上にある共...
-
VB6で定時刻処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
IF文に時間(何時から何時ま...
-
マクロで、次のコードへ行く前...
-
特定の名前のオートシェイプの...
-
シグナル 6(SIGABRT)とは?
-
特定のファイルを他のプロセス...
-
ExcelのVBAで、選択したファイ...
-
Excel VBA セルの名前があるか...
-
どう増強すべきか
-
Word VBA。各マクロの間に待ち...
-
【VBA】エラー処理で別プロシー...
-
UWSCのTHREADについて
-
シェルスクリプトでファイル内...
-
ドリブン??
-
Functionで戻り値を複数返す方法
-
iPhoneのニューラルエンジンっ...
-
エクセル VBAで複数セル選択時...
-
COBOL OCCURSで指定したデータ...
-
どうやってもFor文を抜けてしま...
おすすめ情報