dポイントプレゼントキャンペーン実施中!

Accessでcsvデータを自動的に読み込み、テーブルに追加するマクロを作成したのですが、読み込むcsvファイルの数も容量も大きいため時間がかかります。(数分)
このため、マクロの処理中はフリーズ状態となりタイトルバーに(応答無し)と出てしまう場合があります。
そこで、ポップアップダイアログのようなものを表示させて途中経過を表示させたいのですが良い方法はないでしょうか。

A 回答 (2件)

マクロではどうするのかは不明ですが、モジュールでは、DoEvents 関数を使ってオペレーティング システムに制御を渡す事が可能です。



長らくAccessを使ってないので、あってるか自信が無いのですが・・・
DoCmd.OpenForm "処理中メッセージ"
Forms("処理中メッセージ").text.Value = "処理1実行中"
DoCmd.RepaintObject acForm, "処理中メッセージ"
DoEvents
処理1・・・
Forms("処理中メッセージ").text.Value = "処理2実行中"
DoCmd.RepaintObject acForm, "処理中メッセージ"
DoEvents
処理2・・・
 ・
 ・
DoCmd.Close acForm, "処理中メッセージ"
DoCmd.OpenForm "処理終了メッセージ"
な感じかな?

実際には、フォームへのテキスト代入からDoEventsをサブにして、テキストも複数用意して、履歴を見えるようにして・・・
Forms("処理中メッセージ").text4.Value = Forms("処理中メッセージ").text3.Value
Forms("処理中メッセージ").text3.Value = Forms("処理中メッセージ").text2.Value
Forms("処理中メッセージ").text2.Value = Forms("処理中メッセージ").text1.Value
Forms("処理中メッセージ").text1.Value = "処理1実行中"
DoCmd.RepaintObject acForm, "処理中メッセージ"
DoEvents
で、テキストはフォントを段々と小さくしていくと、流れてるように見えるかも・・・
    • good
    • 1
この回答へのお礼

うまくいきました!
PepaintObjectとDoEventsで再描画が掛かるのですね。
大変役に立ちました、ありがとうございます。

お礼日時:2007/05/09 09:40

一介のデザイナーでプログラマではないのですが・・・。



1、 定期的にマクロが占有している制御をオペレーティング システムに渡す必要がありそうです。
2、そこで進行の表示を更新すればいいのではと推察します。

思うに、フロー制御関数を組み込める形にマクロを修正する必要がありそうです。
    • good
    • 0
この回答へのお礼

おっしゃる通りですね。
マクロ実行中はマクロが制御を独占してしまうので、表示を行うためにはOSにも渡す必要があることが分かりました。
ありがとうございます。

お礼日時:2007/05/09 09:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A