0

私は多くのものを作るマクロエクセルを持っています。それらの 1 つは、(ADODB.Connection を介して) クエリを実行することです。クエリは長く続く可能性があるため、次のようにします。

  • 「クエリ 3 を実行しています」(たとえば) というモーダル情報ダイアログを、ボタンなしで表示します (ユーザーが閉じることはできません)。ユーザーに対してはブロックする必要がありますが、マクロに対してはブロックしないでください。
  • クエリを実行します。
  • 情報ウィンドウを閉じます。

擬似コード:

dim cn as new ADODB.Connection
dim rs as new ADODB.Recordset

dim dia as InfoDialog
set dia = new InfoDialog "running query 3"

cn.Open cn_string
rs.Open query_string, cn, ...

dia.close

新しいライブラリをインポートする必要のないソリューションを希望します (vba エディター > ツール > 参照)。たとえば、'CreateObject("WScript.Shell")' のようなものを使用します。不可能な場合は、ライブラリのインポートも歓迎します (ユーザーのコンピューターにインストールする必要がないため、標準ライブラリが望ましい)。


更新: Kenda の提案に従って、ラベル「Label1」を持つ userForm 「InfoDialog」を作成し、使いやすくするために 2 つのライブラリ関数を作成しました。

sub show_info(text as string)

    InfoDialog.Label1.Caption = text
    InfoDialog.Show
    DoEvents

end sub

sub close_info()

    InfoDialog.Hide

end sub

だから今私は書くことができます:

show_info "Connecting to db ..."
cn.Open cn_string

show_info "Running query ..."
rs.Open query_string, cn, ...

close_info
4

2 に答える 2