【入門編】【タスクバーのクリーン化】大量のプレゼンを並列処理する際にタスクバーのアイコン氾濫を防ぐ、”Application.ShowWindowsInTaskbar”の動的制御テクニック – PowerPoint VBA解析バイブル

スポンサーリンク

こんにちは!PowerPoint VBAの世界へようこそ。
マクロの記録ボタンを押すだけのステップから抜け出し、本格的な自動化ツールを作り始めると、誰もが一度はある「ある悩み」に直面します。

それは――「大量のプレゼンファイルを一括処理している最中、タスクバーがPowerPointのウィンドウだらけになり、PCが重くなっていく現象」です。

何十個ものファイルを開いては閉じ、開いては閉じ……そのたびにタスクバーでアイコンがピコピコと点滅し、挙句の果てにはデスクトップの描画が追いつかなくなる。見ているだけでイライラしますし、何よりPCのパフォーマンスにとっても大いなる無駄です。

今回は、そんなストレスを華麗に解消し、プロのエンジニアがこっそり使っている「タスクバーのクリーン化(`Application.ShowWindowsInTaskbar` の動的制御)」の極意を、優しく丁寧にお伝えします。ここをクリアすれば、あなたのVBAスキルは確実にワンランク上のステージに到達しますよ!

1. なぜタスクバーがアイコンの嵐になるのか?

PowerPoint VBAで複数のプレゼンテーションを処理するとき、基本的には次のようなコードを書きますよね。

‘ フォルダ内のファイルを次々と開いて処理する基本パターンのイメージ
Set prj = Presentations.Open(“C:\Data\sample1.pptx”)
‘ ここで何らかの処理
prj.Close

PowerPointは、`.Open` メソッドでファイルを開いた瞬間、デフォルトで「このウィンドウをWindowsのタスクバーに表示しなさい」という命令を実行します。
つまり、プログラムが裏側で30個のファイルを開けば、タスクバーにも30個のアイコンが物理的に生成されるわけです。

これが、PCのメモリやグラフィック描画に無駄な負荷をかけ、作業中の他のアプリの邪魔をする原因となります。人間が見る必要のないバックグラウンド処理なのだから、ウィンドウをタスクバーに隠してこっそり仕事させたい――それを叶えてくれるのが、今回主役となる設定です。

2. 魔法のプロパティ `Application.ShowWindowsInTaskbar`

ここで登場するのが、PowerPointアプリケーション全体の設定を司るオブジェクト、`Application` のプロパティである `ShowWindowsInTaskbar` です。

  • `True` (デフォルト): 開いたウィンドウをタスクバーに表示する
  • `False`: 開いたウィンドウをタスクバーから隠す(非表示にする)

このプロパティを、「ファイルを一括処理する直前に `False` にし、処理が終わったら元の `True` に戻す」という動的制御(ダイナミック・コントロール)を行うことで、タスクバーの氾濫を防ぎつつ、爆速かつスマートなバッチ処理を実現できます。

3. 実践!タスクバーを汚さない一括処理マクロ

それでは、実際の現場でそのままコピペして使える、堅牢で美しいプロ仕様のコードをご紹介します。エラーハンドリング(後始末)もしっかり組み込んだ、先輩エンジニア太鼓判の実装です。

Sub CleanTaskbarBatchProcess()
Dim targetFolder As String
Dim fileName As String
Dim prj As Presentation

‘ 【重要】処理前の元の設定(True/False)を退避させておく変数
Dim originalTaskbarSetting As Boolean

‘ 1. 処理対象のフォルダパスを指定(環境に合わせて書き換えてください)
targetFolder = “C:\YourFolder\PresentationFiles\”

‘ フォルダの存在チェック(簡易)
If Dir(targetFolder, vbDirectory) = “” Then
MsgBox “指定されたフォルダが存在しません。”, vbCritical, “エラー”
Exit Sub
End If

‘ 画面描画を停止してパフォーマンスを極限まで引き上げる
Application.ScreenUpdating = False

‘ 2. ★ここが核心!タスクバーへのウィンドウ表示を「OFF」にする
originalTaskbarSetting = Application.ShowWindowsInTaskbar
Application.ShowWindowsInTaskbar = False

On Error GoTo ErrorHandler ‘ 予期せぬエラー時に設定が戻らなくなるのを防ぐ防壁

‘ 3. フォルダ内のPowerPointファイルを総ざらいするループ
fileName = Dir(targetFolder & “.pptx”)

Do While fileName <> “”
‘ タスクバーにアイコンを出さずに、こっそり裏でファイルを開く
Set prj = Presentations.Open(targetFolder & fileName, ReadOnly:=msoTrue)

‘ ————————————————–
‘ 【ここに実際の処理を記述します】
‘ 例:すべてのスライドのフッターを書き換える、など
‘ Debug.Print prj.Name & ” を処理中…”
‘ ————————————————–

‘ 保存せずに(または保存して)閉じる
prj.Close
Set prj = Nothing

‘ 次のファイルへ
fileName = Dir()
Loop

ErrorHandler:
‘ 4. 【絶対必須】処理が終わったら(あるいはエラー時でも)設定を必ず元に戻す!
Application.ShowWindowsInTaskbar = originalTaskbarSetting
Application.ScreenUpdating = True

If Err.Number <> 0 Then
MsgBox “エラーが発生しました: ” & Err.Description, vbCritical
Else
MsgBox “すべてのプレゼンの裏側処理が完了しました!タスクバーはキレイなままです。”, vbInformation, “完了”
End If
End Sub

コードのポイント解説

1. 設定のバックアップと復元 (`originalTaskbarSetting`)
VBAの鉄則として、自分が変更したアプリケーション全体の設定は、処理終了時に必ず元の状態へ戻さなければなりません。これを忘れると、ユーザーが手動でファイルを開いたときにもタスクバーに表示されなくなるという奇妙なバグを生むため、細心の注意を払いましょう。
2. エラーハンドリング (`On Error GoTo`)
もしループの途中でファイルが破損していてエラーが起きても、`ErrorHandler` ラベルを経由して必ず `ShowWindowsInTaskbar` が元に戻る仕組みにしています。プログラミングの美しさは、こうした「後始末の確実性」に宿ります。
3. `Application.ScreenUpdating = False` とのコンボ
ウィンドウをタスクバーから隠すだけでなく、画面の再描画自体を止めることで、処理速度が何倍にも跳ね上がります。

4. 陥りやすい罠と注意点

最後に、初心者のうちによくある「ハマりポイント」をシェアしておきます。

  • 「あれ? デスクトップからパワーポイントが消えた?」と焦る

`ShowWindowsInTaskbar = False` にしている間は、タスクバーのアイコンだけでなく、Alt+Tabキーによるウィンドウ切り替えのリストからも一時的に姿を消します。「プログラムがフリーズしたのでは?」と勘違いしやすいですが、VBAの実行が終われば(あるいはコード内にブレークポイントを挟んで止まれば)元に戻るので安心してください。

  • デバッグ中は設定を戻し忘れない

コードの途中に `Exit Sub` やブレークポイントを入れて強制終了させた場合、タスクバー非表示設定が引き継がれてしまうことがあります。その場合は、イミディエイトウィンドウで `Application.ShowWindowsInTaskbar = True` と手動で実行して復旧させてあげましょう。

まとめ

今回は、PowerPoint VBAにおける『タスクバーのクリーン化』という、実務で非常に役立つテクニックを解説しました。

  • 大量のファイルを扱うときは、`Application.ShowWindowsInTaskbar = False` でタスクバーの氾濫を防ぐ。
  • 処理の前後で必ず元の設定に戻す(ステートの管理)。
  • 画面描画停止と組み合わせることで、パフォーマンスも劇的に向上する。

ここをクリアできれば、単なる「マクロが動く人」から、実務の負荷やUX(ユーザー体験)まで考慮できる「真の業務自動化エンジニア」への大きな一歩を踏み出したことになります。

ぜひ次の自動化スクリプトから取り入れて、スッキリ快適な開発環境を手に入れてくださいね!それでは、また次の知見でお会いしましょう。

タイトルとURLをコピーしました