【入門編】【上級者】保存時のメタデータ(作成者、タイトル、タグ、個人情報)を完全に削除(ドキュメント検査)してから、外部配布用として別名保存するセキュリティ対策マクロ – PowerPoint VBA解析バイブル

スポンサーリンク

【上級編】PowerPointの「見えない資産」を完全消去せよ。安全な配布用ファイル作成の極意

こんにちは。現場で泥臭く、かつエレガントな自動化を追求しているエンジニアです。

皆さんは、社内会議で使ったプレゼン資料をそのまま社外へメール添付していませんか?
実は、そのファイルには「あなたの名前」「作成日時」「編集履歴」「非表示のコメント」といった、ビジネス上のリスクとなり得る情報が深層に埋め込まれています。

「名前を付けて保存」だけでは、これらは消えません。今回は、PowerPoint VBAの奥義である `RemoveDocumentInformation` を叩き込み、配布前にファイルを完全クレンジングする最強の自動化テクニックを伝授します。

—

1. なぜ「手作業」では不十分なのか?

PowerPointのファイルは、実はXML形式の集合体です。プロパティやメタデータは、スライドの見た目とは別の領域(メタ層)に格納されています。

  • 作成者情報: プロパティに埋め込まれた誰が作ったかの足跡。
  • コメント: 修正指示などの「内輪のメモ」が残ったまま。
  • 非表示スライド: 過去にボツになった秘匿情報が残っていることも。

これらを一括で掃除するのが、今回紹介する「ドキュメント検査(Document Inspector)」の自動化です。

—

2. 禁断のクレンジング・コード

このコードは、現在開いているプレゼンテーションを読み取り、メタデータを抹消した上で、別名で保存するプロフェッショナル仕様です。

Sub ExportSecurePresentation()
Dim pptPath As String
Dim savePath As String
Dim targetPpt As Presentation

‘ 1. 現在のファイルパスを取得
Set targetPpt = ActivePresentation

‘ 保存先を同じフォルダの「配布用_ファイル名」にする
savePath = Left(targetPpt.FullName, InStrRev(targetPpt.FullName, “\”)) & _
“配布用_” & targetPpt.Name

‘ 2. メタデータのクレンジング実行
‘ msoDocInspectorSuccess が返れば成功。
‘ RemoveDocumentInformation は、引数に指定した項目を物理的に破棄します。
On Error Resume Next
targetPpt.RemoveDocumentInformation (msoDocInfoComments) ‘ コメント削除
targetPpt.RemoveDocumentInformation (msoDocInfoHiddenSlides) ‘ 非表示スライド削除
targetPpt.RemoveDocumentInformation (msoDocInfoDocumentProperties) ‘ プロパティ削除
On Error GoTo 0

‘ 3. セキュリティを考慮して別名保存
‘ ppSaveAsOpenXMLPresentation は最新の.pptx形式
targetPpt.SaveCopyAs savePath

MsgBox “クレンジング完了!” & vbCrLf & “保存先: ” & savePath, vbInformation
End Sub

コードの心臓部:解説

  • `RemoveDocumentInformation`: これが今回の主役です。列挙型(msoDocInfo…)を渡すことで、特定のメタデータを狙い撃ちで消去します。
  • `SaveCopyAs`: 元のファイル(編集用)を破壊せずに、安全なコピーだけを書き出します。これぞ自動化の鉄則です。

—

3. 初学者が必ず陥る罠と対処法

VBAを触り始めた皆さんが、ここをクリアすれば「中級者の壁」を突破できるポイントを教えます。

① 「権限エラー」に要注意

保存先フォルダに書き込み権限がない場合、コードは停止します。必ず `Dir` 関数などでフォルダの存在確認を行うか、エラーハンドリング(`On Error GoTo …`)を実装する癖をつけてください。

② 保存形式の選択

`SaveAs` メソッドを使う際、第2引数でフォーマットを指定しないと、現在の環境設定に依存します。配布用なら迷わず `ppSaveAsOpenXMLPresentation` を指定し、拡張子を確実に `.pptx` にしましょう。

—

4. さらなる高みへ:運用のアドバイス

このコードを「クイックアクセスツールバー」に登録しておけば、「ボタン一つで配布用ファイルが完成する」という、究極の時短と安全を両立できます。

さらに上を目指すなら、以下のような拡張も検討してみてください。

  • PDF変換の追加: `ExportAsFixedFormat` を追記し、同時にPDFも書き出す。
  • ファイル名の日付付与: `Format(Date, “yyyymmdd”)` を使い、版管理を自動化する。

まとめ:自動化は「愛」である

今回紹介したクレンジング処理は、単なるコードのコピペではありません。「情報の漏洩を防ぐ」という、エンジニアとしての倫理観をコードに落とし込んだものです。

PowerPoint VBAは、マクロ記録の先にある「オブジェクトを操る快感」を知った時、あなたの強力な武器になります。まずはこのコードを動かして、メタデータが消える瞬間の「清々しさ」を体感してください。

もし分からないことがあれば、いつでも聞いてください。あなたの自動化の旅を、全力でサポートします。

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