Excelブックの個人情報は勝手に保存される

エクスプローラでExcelブックのプロパティを見ると、プロパティダイアログの詳細タブでブック自体の情報を見ることが可能です。

ここで保存されている内容は、勝手に書き込まれるものと自分で更新しない限り変わらないものの2通りがあります。

自分しか使わないブックであれば気にする必要はありませんが、他者、特に別会社などに資料として送付する場合にはブックのプロパティから個人情報や機密情報が漏えいする恐れがあります。

ファイル保存時にプロパティの個人情報を削除する設定

そもそも個人情報を書き込まなければいいので、そのような設定にしておくのは重要です。

ファイルタブ→Excelのオプション、でExcelのオプションダイアログを表示し、セキュリティセンターボタン→セキュリティセンターの設定→プライバシーオプション→「ファイルを保存するときにファイルのプロパティから個人情報を削除する」にチェックを付けると、ファイル保存時に個人情報は削除されます。

ただ、このような設定をしていても、それ以前に作成したブックや過去資料を流用している場合などで個人情報が残っている場合があります。

そこで、ブックに保存されている個人情報などの文書プロパティを全て削除するコードを紹介します。

構文

Workbook.RemoveDocumentInformation(RemoveDocInfoType As XlRemoveDocInfoType)

ワークブックの個人情報の削除はWorkbookオブジェクトのRemoveDocumentInformationメソッドで行います。戻り値はありません。

引数には以下のXlRemoveDocInfoType列挙型を指定します。削除で使う定数はほとんどの場合xlRDIDocumentPropertiesでOKです。

定数 内容
xlRDIAll 99 (&H63) 全て
xlRDIComments 1 コメント
xlRDIContentType 16 (&H10) コンテンツタイプ
xlRDIDefinedNameComments 18 (&H12) 定義済みの名前のコメント
xlRDIDocumentManagementPolicy 15 文書管理ポリシー
xlRDIDocumentProperties 8 文書プロパティ
xlRDIDocumentServerProperties 14 サーバプロパティ
xlRDIDocumentWorkspace 10 ワークスペース
xlRDIEmailHeader 5 メールヘッダ
xlRDIInactiveDataConnections 19 (&H13) 無効なデータ接続
xlRDIInkAnnotations 11 インク注釈
xlRDIPrinterPath 20 (&H14) プリンタパス
xlRDIPublishInfo 13 発行情報データ
xlRDIRemovePersonalInformation 4 個人情報削除
xlRDIRoutingSlip 6 回覧先
xlRDIScenarioComments 12 シナリオコメント
xlRDISendForReview 7 校閲者送信情報

ブックの個人情報を削除するマクロ

以下の関数は引数で指定されたフルパスのExcelブックから個人情報などの文書プロパティを削除します。削除後に保存をしないと反映されないためSaveメソッドで保存しています。

ブックが存在しない場合などでエラーが発生することも考えられるため、エラー処理を入れています。また、確認ダイアログが出る場合があるため確認ダイアログの表示を抑制しています。

なお、ブックの共有が設定されている場合は「エラー1004 このドキュメントは署名されている、保護されている、共有されている、または読み取り専用に設定されているため、PII を削除できません。」というエラーが発生し、個人情報の削除は出来ません。

VBAでブックの共有が設定されているかどうかを判定して解除することは可能ですが、本当に解除してよいかどうかはブックの利用状況によって異なるためここでは実装していません。

処理の内容はコードのコメントの通りです。

以下は上のDelPersonalInfo関数の使用例です。引数に対象ブックのパスを渡します。

実行後、対象ブックの個人情報などの文書プロパティが削除されます。