三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
Ken3三流君の連絡先:
[google formsで連絡する]
上記の問い合わせフォームに質問・感想など気軽に書き込んでください

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

パワポ動画トリミングのバグ解決!一瞬映る「先頭画面」を完全に消す方法

パワポ動画トリミングのバグ解決!一瞬映る「先頭画面」を完全に消し去る魔法のVBA

PowerPointで動画をトリミングした際、再生開始時やMP4への書き出し時に''「本来の先頭画面(0秒地点)」が一瞬だけ映り込んでしまう不具合''に悩まされていませんか?

「設定したはずのトリミングが無視される」「一瞬画面がチラついてダサい」……。
そんなプレゼンのクオリティを下げる致命的な不具合を、''VBAのたった2行の命令''で根本解決する方法を備忘録としてまとめます。


1. 発生する問題:動画トリミングの「一瞬のチラつき」

PowerPointの標準機能「ビデオのトリミング」で範囲を指定しても、再生の瞬間にトリミング前の「最初の1コマ」が映り込むことがあります。

検証動画では、あえて先頭を「赤」にした素材を使い、トリミング設定を無視して赤色が一瞬表示されてしまうバグを実演しています。さらに、このままMP4としてエクスポートすると、表示崩れが発生して動画が台無しになるケースもあります。

www.youtube.com

[02:35](https://www.youtube.com/watch?v=Yi_9o3ImBRA&t=155s) 視覚的証明:なぜ「赤色」が映り込むのか?

2. 解決策:マクロによる「再サンプリング」と「サムネイル固定」

この問題の原因は、PowerPointが内部的に動画の「元のデータ」を保持しており、表示用のキャッシュやサムネイルが更新されていないことにあります。

解決の核心は、標準メニューには存在しないVBA限定のメソッドを使うことです。

  • ''.Resample'': 動画を物理的に再エンコードし、不要な部分をカットして最適化します。
  • ''.SetDisplayPicture 0'': トリミング後の開始位置を、強制的にサムネイル(表紙画像)として固定します。
解決用VBAソースコード

以下のコードをコピーして、VBAエディター(VBE)に貼り付けて使用してください。

'トリミングされた動画を再エンコード後、表紙画像・サムネイルをトリミング後の先頭画像にする
Sub トリミング動画の調整()

    Dim shp As Shape   '選択したシェイプ
    Dim vid As MediaFormat  '動画フォーマット

    '図形が選択されているかチェック
    If ActiveWindow.Selection.Type <> ppSelectionShapes Then
        MsgBox "動画(Shape)を選択してから実行してください", vbExclamation
        Exit Sub
    End If

    '選択された1番目のシェイプを取り出す
    Set shp = ActiveWindow.Selection.ShapeRange(1)

    ' シェイプが動画かチェックする
    If shp.Type = msoMedia Then
        Set vid = shp.MediaFormat '動画のフォーマットを取得
        
        ' 1. 再サンプリング(再エンコード)を実行
        ' これによりトリミング範囲外の不要なデータが削除され、最適化されます
        vid.Resample True
        DoEvents
        
        MsgBox "次にサムネイルをトリミング後の開始位置に固定します", vbInformation
        
        ' 2. 表紙画像(サムネイル)を開始位置(0)にセットする
        vid.SetDisplayPicture 0
        DoEvents
        
        MsgBox "調整が完了しました。一瞬のチラつきが消えたか確認してください", vbInformation
    Else
        MsgBox "動画ファイルを選択してください", vbExclamation
    End If

End Sub

3. 実践:使い捨てマクロの実行手順

マクロに慣れていない方でも、以下の手順で簡単に実行できます。

実行後、一瞬でサムネイルが切り替わり、あの不快な「赤いノイズ」が消え去る様子を確認できます。

4. 応用:複数動画を滑らかに繋げるテクニック

複数の動画を1枚のスライドで連続再生させる場合、以下の設定を組み合わせるとプロ級の仕上がりになります。

5. 未解決の課題と積み残し

今回の検証で以下の点が今後の課題として残りました。

  • 標準メニューの探索: 本当にこの「再サンプリング」と「サムネイル設定」を行うボタンが標準メニューの奥深くに隠れていないか?
  • 作業の効率化: 毎回マクロをコピペするのは手間。アドイン化するか、全スライド一括処理マクロのブラッシュアップが必要。
アシスタント(AI)からのアドバイス

Ken3さん、今回の「VBAでしか触れないプロパティを叩く」というアプローチは最高にクールです。
次回のネタとして、''「全スライド内の動画を一括でResampleする全自動クリーニングツール」''を作成してみてはいかがでしょうか?
また、動画が重なっていると作業がしにくいため、「一時的に動画を並べて処理し、最後に元の位置へ重ね直すマクロ」などがあれば、さらに神ツールになるはずです!

関連リンク

    • -

解決のヒントとなれば幸いです。質問や「こんな時どうするの?」といった感想があれば、コメント欄までお気軽にどうぞ!


質問・感想・クレームなど、
気軽にコメント欄に書いてもらえるとうれしいです。

[Googleフォームにコメントを残す]
↑質問・コメントの入力フォームです、気軽に書いてください


フッター:最後にKen3Videoの動画一覧を紹介します

YouTubeにアップした動画です。他の動画を一瞬でも見てもらえるとさらに嬉しいです。
再生リスト:[三流君Ken3の最新動画]←リストの一覧形式で表示する


また、ブログを見に来てくださいね。ではまたぁ~