エクセルVBA、ブックの保存で作成者名を付加して保存するマクロを作成します。
「BuiltinDocumentProperties」でブックプロパティの取得と変更をします。
こんにちは、じゅんぱ店長(@junpa33)です。
自分が作成した書類を提出報告する時、その利用したフォーマットやテンプレートが他の人が作成したもの、ということが多くあります。
そういった場合、作成したファイル(ブック)のプロパティデータで、「作成者欄」のところが自分以外の他人名表示になったままということが多いです。作成日時も違っています。
これはテンプレ作成者と作成日ですので、書類作成者としては自己アピール的にも ” なんかイヤ ” ですよね。
考え抜いて作ったプランも「他人が作ったような」表記は許せない人も多いのでは・・・。
この記事では、その作成者名の問題対策と自己アピール有効対策を紹介します。
- ブックの知識
- ブックの操作
- ワークブックを開くOpenメソッドの書き方 Excelマクロ
- VBA ブック名の取得法4つの解決策を詳しく解説
- VBA 開く,保存,閉じる,作成,削除 ブックの存在確認後のコード記述
- ファイルの保存に年月日+時刻を付けて管理する
- VBA 保存先フォルダをダイアログ指定で変数化
- 新規ブック5つの保存法。AddとSaveAsの使い方がわかる
- セル値を使いブック名として保存。統一フォームに有用
- VBA シートをブックから切り出し名付け保存する
- ブック名に作成者名を付加。 プロパティ変更とファイル保存
- 不要フォルダを削除する2種類のコードの作成
- 要らないファイルを自動削除するコードの作成
- ワークブックを閉じる12のパターン使い分け VBA最速理解
- ピンポイントでファイルを完全に削除するマクロ(コピペ可)
コンテンツ
ブックの作成者をプロパティ的にVBAで変更する
ブックのプロパティにある作成者名を確認、作成日時を確認して、マクロ(VBAコード)でデータ変更を行います。
ブックのプロパティを確認する
ブックプロパティの作成者は誰にクレジットされているかを一番簡単に調べる方法は、
ブックのアイコンを右クリックして、右メニューからプロパティをクリックします。
ブックのプロパティの詳細タブに表示されています。(●●●● の部分です)
この作成者の「●●●●」を自分の名前に変更します。
ブックのプロパティを変更する
ブックのプロパティを変更するには、ワークブックオブジェクトに対して、
「BuiltinDocumentProperties」を実行します。
- BuiltinDocumentProperties(“Author”).Value
作成者名を取得したり変更したりできる
- BuiltinDocumentProperties(“Creation Date”).value
この元々のブックが作成された日付日時を取得・変更できる。
Sub 作成者名を付加でブック保存1()
With ActiveWorkbook
.BuiltinDocumentProperties("Author").Value = "■■ ■"
.BuiltinDocumentProperties("Creation Date").Value = _
Format(Now, "yyyy/mm/dd hh:nn")
End With
End Sub
実行結果はこのようになります。
初めの白紙のエクセルブックより、書類を作成している場合は、あえてプロパティを変更する必要は無いでしょう。
問題は、既にあるテンプレートや既定フォーマットを使用して書類を作成する場合です。
はじめに表示されているプロパティ項目で、以下の2つの項目が自分ではない別の人のデータ項目です。
- 詳細タブの「作成者」
- 詳細タブの「コンテンツの作成日時」
は、テンプレやフォーマットを作成した人と日付になっています。
この2点を変更するのが
- ⇒ BuiltinDocumentProperties(“Author”).Value = “■■ ■”
- ⇒ .BuiltinDocumentProperties(“Creation Date”).Value = Format(Now, “yyyy/mm/dd hh:nn”)
となります。
詳細タブの「前回保存者」は、このエクセルブックを開いて修正して最後に保存した人の名前が自動で表示されます。
全般タブの「作成日時」は、このエクセルブックで書類作成して初めて編集保存した日付時間
全般タブの「更新日時」は、このエクセルブックを最終更新した日付時間
となります。
作成者名を付けてブックを保存する
プロパティを変更する必要があることを前提に、作成者「”Author”」の項目は自分の名前を入れておきましょう。
VBAコードに埋め込みますので、一度書き込めばそれでOKです。( “■■ ■”の部分です)
名前を付けて保存ダイアログ表示で、はじめに表示されるフォルダはカレントホルダになりますので、
あらかじめ保存先を決めている場合には、「ChDir・・・」でカレントフォルダを事前に変更しておきます。
VBA全コード
Sub 作成者名を付加でブック保存2()
Dim Ans As Integer
Dim ASNamea, ASNameb, ASNamec, BkName As Variant
'プロパティの変更
Ans = MsgBox("ブックプロパティを変更しますか", vbYesNo + _
vbExclamation, "作成者変更確認")
If Ans = 6 Then
With ActiveWorkbook
.BuiltinDocumentProperties("Author").Value = "■■ ■"
.BuiltinDocumentProperties("Creation Date").Value = _
Format(Now, "yyyy/mm/dd hh:nn")
End With
ActiveWorkbook.Save
Else
End If
'プロパティの変更ここまで
'名前を付けて保存ダイアログ表示
Const FFa As String = "Excel ブック,*.xlsx,Excel マクロ有効ブック, " & _
"*.xlsm,"
Const FFb As String = "Excelバイナリブック,*.xlsb," & _
"Excel97-2003ブック,*.xls,"
Const FFc As String = "CSVカンマ区切り,*.csv,すべてのファイル,*.*"
ASNamea = ActiveWorkbook.BuiltinDocumentProperties("Author").Value
ASNameb = Format(Now, "yymmdd")
ASNamec = " -" & ASNamea & ASNameb
ChDir "C:\Users\●●●\Documents\●●●\●●●\●●●" & _
"\VBAブックの名前を付けて保存\シート名で名付ける"
BkName = Application.GetSaveAsFilename(InitialFileName:=ASNamec, _
filefilter:=FFa & FFb & FFc, FilterIndex:=1, _
Title:="作成者名を付けて保存")
If BkName = "False" Then
Exit Sub
End If
'名前を付けて保存ダイアログここまで
ActiveWorkbook.SaveAs BkName
End Sub
作成者名を付けてブック保存のVBAを実行する
このマクロ(VBAコード)を実行するとこのような流れになります。
1.マクロを実行するとまずメッセージボックスが表示される
作成者変更確認のメッセージが表示されるので、「はい」「いいえ」どちらかを選択する。
最初から新しいエクセルブックで書類作成していた場合は「いいえ」で良いですが、既定のテンプレ・フォーマットを使っていた場合は「はい」を選択して「作成者名」と「作成日」を自分にしておいた方が良いでしょう。
2.名前を付けて保存ダイアログが開かれる
次に、
作成したブックを作成者名と編集日(コンテンツの作成日時ではない)を付加して名前を付けて保存します。
「 -■■ ■230219」 作成者 ■■ ■ が23年2月19日 に保存したブックということですが、何の書類か分かる様にタイトルを付け加えてください。
3.保存完了です
最後に、
この例では、「サンプル書類 -■■ ■230219」として保存しました。
作成者が田中 駿さんなら「サンプル書類 -田中 駿230219」というイメージになります。
まとめ
相手がいて提示する紙書類は、必ず誰が出したか何処が発行したかは必ず書かれるものです。
同様に、電子書類として、エクセルデータで相手に提出する場合やグループとして共有する場合など、誰が作成したかが一目でわかるようにしておくことも重要です。
そういった時にエクセルファイルのファイル名に作成者名を自動付加するこのマクロを利用いただけると思います。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。