Excel VBAでファイルの作成者情報をファイル名に反映させる方法では、Author propertyを読み、privacyと命名規則を確認してsafe slugへ変換し、approved一件をrenameする。BuiltinDocumentProperties(‘Author’)はOffice document metadataであり、実際の作成者本人や現在編集者を必ず証明するものではない。空やtemplate既定値もあり得る。この記事はworkbook full path、Author property、normalized author、old/new path、approvalを一件にするを判断軸にして、記事固有のコード、合否、停止条件、復元を順序立てて説明します。
任意tagやversionでなく、Office document propertyのAuthorを利用する際の限界を扱う。完了は「new nameのauthor slugが承認metadataと一致し、内容hashとextensionが不変である」です。結果が空なら「Author空やgeneric値ならrenameせず、Windows usernameで勝手に補完しない」として調べ、エラーを0件へ置き換えません。
BuiltinDocumentProperties Authorの出所
BuiltinDocumentProperties Authorの出所では「workbook full path、Author property、normalized author、old/new path、approvalを一件にする」という粒度で対象を特定します。BuiltinDocumentProperties(‘Author’)はOffice document metadataであり、実際の作成者本人や現在編集者を必ず証明するものではない。空やtemplate既定値もあり得る。表示名や先頭候補だけを採用しません。
作成者名を含むファイル名の対象が複数なら、候補数と除外理由を残します。作成者名を含むファイル名では実行ユーザー、OS・製品版、locale、カレントディレクトリも結果の解釈へ影響するため同時に記録します。
空・既定値・個人情報を確認
Author propertyを読み、privacyと命名規則を確認してsafe slugへ変換し、approved一件をrenameする。作成者名を含むファイル名では、単にコマンドが終了したことではなく「new nameのauthor slugが承認metadataと一致し、内容hashとextensionが不変である」を完了条件にします。任意tagやversionでなく、Office document propertyのAuthorを利用する際の限界を扱う。
空・既定値・個人情報を確認に入る前に、対象、実行場所、権限、入力の由来を確認します。Author空やgeneric値ならrenameせず、Windows usernameで勝手に補完しない。判定不能を成功へ丸めません。
安全なauthor slugへ変換
安全なauthor slugへ変換は変更や出力生成より先に行う観測です。workbook full path、Author property、normalized author、old/new path、approvalを一件にするを含む形で現状を保存し、後段のコードが同じ対象へ向くか確認します。
Option Explicit
Sub InspectAuthorProperty()
Dim author As String
author = CStr(ThisWorkbook.BuiltinDocumentProperties("Author").Value)
Debug.Print author, ThisWorkbook.FullName
End Sub
BuiltinDocumentProperties(‘Author’)はOffice document metadataであり、実際の作成者本人や現在編集者を必ず証明するものではない。空やtemplate既定値もあり得る。作成者名を含むファイル名では取得不能、対象なし、値が空という三状態を分け、stderrや終了コードを捨てません。
Approved時だけrename
Approved時だけrenameではAuthor propertyを読み、privacyと命名規則を確認してsafe slugへ変換し、approved一件をrenameする。作成者名を含むファイル名のサンプルにあるパス、セル、ユーザー、時刻は検証用なので、直前に確認した承認値へ置き換えます。
Option Explicit
Private Function SafeAuthorPart(ByVal value As String) As String
Dim token As Variant
value = Trim$(value)
For Each token In Array("\", "/", ":", "*", "?", """", "<", ">", "|")
value = Replace$(value, CStr(token), "_")
Next token
Do While Len(value) > 0 And (Right$(value, 1) = "." Or Right$(value, 1) = " ")
value = Left$(value, Len(value) - 1)
Loop
value = Left$(value, 60)
If Len(value) = 0 Or value = "." Or value = ".." Then Err.Raise 5, , "Authorを安全な名前へ変換できません"
SafeAuthorPart = value
End Function
Sub RenameCopyWithAuthor()
Dim ws As Worksheet, fso As Object, oldPath As String, newPath As String
Dim author As String, ext As String, newName As String
Set ws = ThisWorkbook.Worksheets("AuthorMap"): Set fso = CreateObject("Scripting.FileSystemObject")
oldPath = fso.GetAbsolutePathName(Trim$(CStr(ws.Range("B2").Value2)))
If StrComp(oldPath, ThisWorkbook.FullName, vbTextCompare) = 0 Then Err.Raise 5, , "開いているThisWorkbook自体は改名せず、閉じたcopyをB2へ指定します"
author = SafeAuthorPart(CStr(ThisWorkbook.BuiltinDocumentProperties("Author").Value))
ext = fso.GetExtensionName(oldPath)
newName = fso.GetBaseName(oldPath) & "_author-" & author
If Len(ext) > 0 Then newName = newName & "." & ext
newPath = fso.BuildPath(fso.GetParentFolderName(oldPath), newName)
ws.Range("C2").Value2 = newPath
If Not fso.FileExists(oldPath) Then Err.Raise 53, , "元copyがありません"
If fso.FileExists(newPath) Then Err.Raise 58, , "変更先があります"
If StrComp(CStr(ws.Range("D2").Value2), "Approved", vbBinaryCompare) <> 0 Then Exit Sub
Name oldPath As newPath
ws.Range("E2").Value2 = "Renamed"
End Sub
個人名を不要にfile名へ公開しない。禁止文字、collision、open workbookで中止する。作成者名を含むファイル名で変更が発生する場合は、新規出力、no-clobber、WhatIf、下書き表示など利用可能な安全機構を先に使います。
rename後のauthor filenameを検証
rename後のauthor filenameを検証では入力と出力を別々に再取得します。作成者名を含むファイル名の合格は、new nameのauthor slugが承認metadataと一致し、内容hashとextensionが不変であることです。件数だけでなく識別値と内容も照合します。
Sub VerifyAuthorFilename()
With ThisWorkbook.Worksheets("AuthorMap")
Debug.Print ThisWorkbook.BuiltinDocumentProperties("Author").Value, Dir$(.Range("C2").Value2)
End With
End Sub
Author空やgeneric値ならrenameせず、Windows usernameで勝手に補完しない。作成者名を含むファイル名の結果が期待と違えば追加変更を重ねず、入力、対象範囲、locale・時刻、権限、製品仕様の順に戻って調べます。
document authorと実作成者の違い
old/new mappingを保存し、oldが空いている場合だけ元nameへ戻す。復元にも「workbook full path、Author property、normalized author、old/new path、approvalを一件にする」を用い、類似名の別対象へ処理しません。
- 作成者名を含むファイル名の開始前状態
- 採用対象: workbook full path、Author property、normalized author、old/new path、approvalを一件にする
- 復元後の確認: new nameのauthor slugが承認metadataと一致し、内容hashとextensionが不変である
- 復元を止める条件: 個人名を不要にfile名へ公開しない。禁止文字、collision、open workbookで中止する
元nameへ戻す
個人名を不要にfile名へ公開しない。禁止文字、collision、open workbookで中止する。元nameへ戻すに当てはまるときは中止理由、対象識別子、終了コードまたはErr.Number、直前に成功した段階を保存します。
Author空やgeneric値ならrenameせず、Windows usernameで勝手に補完しない。作成者名を含むファイル名の再試行は原因を直し、同じ入力と対象を再確認してから行います。警告抑止や強制上書きで通しません。
共有時のprivacy
責任者情報が必要ならdocument management systemの管理metadataを優先する。作成者名を含むファイル名を反復するときは、正常、差分なし、対象なし、要承認、失敗を別の状態として記録します。
| 共有時のprivacyの主キー | workbook full path、Author property、normalized author、old/new path、approvalを一件にする |
| 採用条件 | new nameのauthor slugが承認metadataと一致し、内容hashとextensionが不変である |
| 空結果 | Author空やgeneric値ならrenameせず、Windows usernameで勝手に補完しない |
| 中止条件 | 個人名を不要にfile名へ公開しない。禁止文字、collision、open workbookで中止する |
BuiltinDocumentProperties Authorの出所から証跡化する安全なauthor slugへ変換
作成者名を含むファイル名の証跡は「workbook full path、Author property、normalized author、old/new path、approvalを一件にする」を主キーにします。BuiltinDocumentProperties Authorの出所で確認した値と、実行直前・実行直後の値を同じ作業番号に保存し、表示名が似ている別対象や前回の結果を混ぜません。
空・既定値・個人情報を確認で空結果を判定するrename後のauthor filenameを検証
作成者名を含むファイル名の空結果は「Author空やgeneric値ならrenameせず、Windows usernameで勝手に補完しない」として扱います。空・既定値・個人情報を確認で入力自体が存在するか、権限で見えていないか、条件に一致しないだけかを分け、0件という表示だけで成功・失敗を決めません。
共有時のprivacyから復旧可否を測るBuiltinDocumentProperties Authorの出所
作成者名を含むファイル名の復旧判断では「old/new mappingを保存し、oldが空いている場合だけ元nameへ戻す」を採用します。共有時のprivacyを再確認し、復旧後に「new nameのauthor slugが承認metadataと一致し、内容hashとextensionが不変である」へ戻ったかを別の読み取り処理で測定します。
作成者名を含むファイル名の事前確認では、workbook full path、Author property、normalized author、old/new path、approvalを一件にするを画面表示や標準出力だけで済ませず、実行日時と一緒に作業記録へ写します。BuiltinDocumentProperties(‘Author’)はOffice document metadataであり、実際の作成者本人や現在編集者を必ず証明するものではない。空やtemplate既定値もあり得るという仕様があるため、似た名前の別対象、前回実行時の値、キャッシュされた表示を今回の対象と取り違えないことが重要です。
作成者名を含むファイル名のコードを実行した直後は、まず終了状態を保存し、その後に別の読み取り処理で「new nameのauthor slugが承認metadataと一致し、内容hashとextensionが不変である」を確認します。作成者名を含むファイル名では同じコードの表示だけを合否判定に使うと部分成功や遅延反映を見逃すため、識別値、件数、内容の三点を照合します。
作成者名を含むファイル名で結果が得られない場合は、Author空やgeneric値ならrenameせず、Windows usernameで勝手に補完しない。作成者名を含むファイル名ではこの状態と、権限拒否、入力形式の不一致、接続先や時刻の違いを一緒にしません。作成者名を含むファイル名の対象候補数、除外された候補、最後に成功した確認処理を残すと、再試行で同じ失敗を重ねずに済みます。
作成者名を含むファイル名を元へ戻す必要があるときは、old/new mappingを保存し、oldが空いている場合だけ元nameへ戻す。作成者名を含むファイル名の復元前にも変更後の識別値を再取得し、別担当者の更新が入っていないか確認します。作成者名を含むファイル名の復元結果も通常処理と同じ完了条件で測り、戻したつもりという報告だけで閉じません。
作成者名を含むファイル名を引き継ぐ記録には、責任者情報が必要ならdocument management systemの管理metadataを優先する。特に「個人名を不要にfile名へ公開しない。禁止文字、collision、open workbookで中止する」に該当した場合は、実行を止めたこと自体を正しい結果として扱います。作成者名を含むファイル名の次回担当者が承認範囲と未処理対象を区別できるよう、作業番号と対象識別子を対応付けます。
作成者名を含むファイル名の作業記録には、開始前の対象候補、採用した識別値、実行したコード、終了後の実測、除外理由を同じ作業番号で保存します。「workbook full path、Author property、normalized author、old/new path、approvalを一件にする」を省くと別対象との比較になり得るため、日時、実行場所、製品版と一緒に残します。
Excel VBAでファイルの作成者情報をファイル名に反映させる方法を定期運用へ組み込む場合も初回は対話的に確認します。正常は「new nameのauthor slugが承認metadataと一致し、内容hashとextensionが不変である」、空結果は「Author空やgeneric値ならrenameせず、Windows usernameで勝手に補完しない」、停止は「個人名を不要にfile名へ公開しない。禁止文字、collision、open workbookで中止する」として報告し、次の担当者が同じ条件で追試できるようにします。
Authorから閉じたcopyの変更先を生成する
BuiltinDocumentPropertiesのAuthorを安全なpath部品へ変換し、B2のbasenameとextensionからbasename_author-AUTHOR.extensionを計算してC2へ書きます。実行順はAuthor確認、Approved一件のrename、C2とDir$によるrename後検証です。
VBAで開いているThisWorkbook自身のName変更は避け、B2には閉じたcopyを指定します。元の存在、先の不存在、Approved完全一致を確認してから一件だけ改名します。
公式情報・参考資料
作成者名を含むファイル名のコマンド、API、対応範囲は次の公式一次資料で確認しました。確認日は2026年7月17日です。作成者名を含むファイル名の実行環境にあるman、–help、VBA Object Browser、Get-Helpも併用してください。

コメント