記事
Accessマクロを使ってステータスバー領域をプログレスバーとして利用するサンプル
OfficeVBA
公開日:2009/03/17 00:00
ひとまずマクロのソースを載せておきます。
サンプルを試す際は既出のソースをAccessVBAの隠しメソッドであるLoadFromTextメソッドで吸い上げてAccessに取り込んで下さい。
あと補助用のVBモジュールです。
処理としては1秒ごとに進捗を進め、3秒後に100%となり処理が完了という流れになります。
さて、まず頭から処理を説明していくと、まず、SysCmd (5)でステータスバー領域を明示的にクリアします。これはステータスバー領域をテキスト表示する場合でもプログレスバー表示する場合でも同様のようです。
次にSysCmd (1, "Wait Working・・・",100)でプログレスバーとしての初期化を行います。
第2引数はプログレスバーの横に表示するメッセージで進捗が進んでいく間は固定となります。次の第3引数は進捗がMAXになった場合の値を示します。ここは任意ですが、今回はパーセントのイメージで使用したいので、100を指定しました。
あとは1秒ごとにSysCmd (2, x)で進捗を進め、3秒経つと進捗が100%になり完了です。
Version =196611
ColumnsShown =0
Begin
Action ="RunCode"
Comment ="ステータスバー領域をクリア"
Argument ="SysCmd (5)"
End
Begin
End
Begin
Action ="RunCode"
Comment ="プログレスバーを初期化"
Argument ="SysCmd (1, \"Wait Working・・・\",100)"
End
Begin
End
Begin
Action ="RunCode"
Comment ="ウェイト"
Argument ="vbSleep (1000)"
End
Begin
End
Begin
Action ="RunCode"
Comment ="値をセット"
Argument ="SysCmd (2, 33)"
End
Begin
End
Begin
Action ="RunCode"
Comment ="ウェイト"
Argument ="vbSleep (1000)"
End
Begin
End
Begin
Action ="RunCode"
Comment ="値をセット"
Argument ="SysCmd (2, 66)"
End
Begin
End
Begin
Action ="RunCode"
Comment ="ウェイト"
Argument ="vbSleep (1000)"
End
Begin
End
Begin
Action ="RunCode"
Comment ="値をセット"
Argument ="SysCmd (2, 100)"
End
サンプルを試す際は既出のソースをAccessVBAの隠しメソッドであるLoadFromTextメソッドで吸い上げてAccessに取り込んで下さい。
あと補助用のVBモジュールです。
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Function vbSleep(ByVal argWait As Long)
Sleep argWait
End Function
処理としては1秒ごとに進捗を進め、3秒後に100%となり処理が完了という流れになります。
さて、まず頭から処理を説明していくと、まず、SysCmd (5)でステータスバー領域を明示的にクリアします。これはステータスバー領域をテキスト表示する場合でもプログレスバー表示する場合でも同様のようです。
次にSysCmd (1, "Wait Working・・・",100)でプログレスバーとしての初期化を行います。
第2引数はプログレスバーの横に表示するメッセージで進捗が進んでいく間は固定となります。次の第3引数は進捗がMAXになった場合の値を示します。ここは任意ですが、今回はパーセントのイメージで使用したいので、100を指定しました。
あとは1秒ごとにSysCmd (2, x)で進捗を進め、3秒経つと進捗が100%になり完了です。

