Excel ステータス バーを使用する方がはるかに簡単です。
Application.StatusBar = "進行状況をユーザーに表示...";
Windows & タスクバー プログレス バーについては、Windows 7 タスクバーをダウンロードする必要があります
: Developer Resources .
サンプル ソリューションを開く必要があります。Windows7.DesktopIntegration プロジェクトを右クリックし、[プロパティ] > [ビルド] > [Tick Register for COM] をクリックします。
開発中に IDE で [COM 相互運用に登録] オプションをオンにすると、IDE は /codebase オプションと共にターゲット アセンブリで regasm を呼び出します。
これにより、regasm.exe は、アセンブリからエクスポートされた COM 可視クラスの次のレジストリ エントリを追加します。
HKEY_CLASSES_ROOT\CLSID{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\InprocServer32\CodeBase=
これにより、CLR はアセンブリへのパスをたどってアセンブリを見つけることができます。コードベース パスがない場合、CLR は標準の検索アルゴリズムを使用してアセンブリ (およびその依存関係) を見つける必要があります。
次に、ソリューションをビルドします > Windows7.DesktopIntegration プロジェクトの bin フォルダーに移動し、Windows7.DesktopIntegration.DLL と Windows7.DesktopIntegration.TLB を System32 フォルダーにコピーするか、GAC に登録します。
CLR が必要なアセンブリを見つけるのに役立つ関連手法の 1 つは、すべてのアセンブリ (およびその依存関係) をクライアント アプリケーション自体と同じフォルダーにコピーすることです。ただし、この場合のクライアント アプリケーションは Excel になります。これは、アセンブリを Excel アプリケーションと同じフォルダーにコピーする必要があることを意味します (お勧めできません)。
Windows7.DesktopIntegration DLL をインスタンス化できるようになると、Windows7Taskbar.SetProgressValue
VBA コードなどのメソッドを呼び出すことができるようになります。
Set Windows7Taskbar = CreateObject("Windows7.DesktopIntegration")
Windows7Taskbar.SetProgressState(form.Handle, Windows7Taskbar.ThumbnailProgressState.Normal)
Windows7Taskbar.SetProgressValue(form.Handle, progress, maximum)