ブック名に作成者名を付加。 プロパティ変更とファイル保存

vbabooksaveaueyecatch

エクセルVBA、ブックの保存で作成者名を付加して保存するマクロを作成します。

「BuiltinDocumentProperties」でブックプロパティの取得と変更をします。

こんにちは、じゅんぱ店長(@junpa33)です。

自分が作成した書類を提出報告する時、その利用したフォーマットやテンプレートが他の人が作成したもの、ということが多くあります。

そういった場合、作成したファイル(ブック)のプロパティデータで、「作成者欄」のところが自分以外の他人名表示になったままということが多いです。作成日時も違っています。

これはテンプレ作成者と作成日ですので、書類作成者としては自己アピール的にも ” なんかイヤ ” ですよね。

考え抜いて作ったプランも「他人が作ったような」表記は許せない人も多いのでは・・・。

この記事では、その作成者名の問題対策と自己アピール有効対策を紹介します。

ブックの作成者をプロパティ的にVBAで変更する

vbabooksaup008

ブックのプロパティにある作成者名を確認、作成日時を確認して、マクロ(VBAコード)でデータ変更を行います。

ブックのプロパティを確認する

ブックプロパティの作成者は誰にクレジットされているかを一番簡単に調べる方法は、

ブックのアイコンを右クリックして、右メニューからプロパティをクリックします。

vbabooksaup001
vbabooksaup003

ブックのプロパティの詳細タブに表示されています。(●●●● の部分です)

vbabooksaup002

この作成者の「●●●●」を自分の名前に変更します。

ブックのプロパティを変更する

ブックのプロパティを変更するには、ワークブックオブジェクトに対して、

BuiltinDocumentProperties」を実行します。

  • BuiltinDocumentProperties(“Author”).Value

  作成者名を取得したり変更したりできる

  • BuiltinDocumentProperties(“Creation Date”).value

  この元々のブックが作成された日付日時を取得・変更できる。

VBA
Sub 作成者名を付加でブック保存1()
        With ActiveWorkbook
         .BuiltinDocumentProperties("Author").Value = "■■ ■"
         .BuiltinDocumentProperties("Creation Date").Value = _
            Format(Now, "yyyy/mm/dd hh:nn")
        End With
End Sub

実行結果はこのようになります。

vbabooksaup004
ブックのプロパティ変更の注意点

初めの白紙のエクセルブックより、書類を作成している場合は、あえてプロパティを変更する必要は無いでしょう。

問題は、既にあるテンプレートや既定フォーマットを使用して書類を作成する場合です。

はじめに表示されているプロパティ項目で、以下の2つの項目が自分ではない別の人のデータ項目です。

  • 詳細タブの「作成者」
  • 詳細タブの「コンテンツの作成日時」

は、テンプレやフォーマットを作成した人と日付になっています。

この2点を変更するのが

  • ⇒ BuiltinDocumentProperties(“Author”).Value = “■■ ■”
  • ⇒ .BuiltinDocumentProperties(“Creation Date”).Value = Format(Now, “yyyy/mm/dd hh:nn”)

となります。

詳細タブの「前回保存者」は、このエクセルブックを開いて修正して最後に保存した人の名前が自動で表示されます。

全般タブの「作成日時」は、このエクセルブックで書類作成して初めて編集保存した日付時間

全般タブの「更新日時」は、このエクセルブックを最終更新した日付時間

となります。

作成者名を付けてブックを保存する

vbabooksaup009

プロパティを変更する必要があることを前提に、作成者「”Author”」の項目は自分の名前を入れておきましょう。

VBAコードに埋め込みますので、一度書き込めばそれでOKです。( “■■ ■”の部分です)

名前を付けて保存ダイアログ表示で、はじめに表示されるフォルダはカレントホルダになりますので、

あらかじめ保存先を決めている場合には、「ChDir・・・」でカレントフォルダを事前に変更しておきます。

VBA全コード

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.マクロを実行するとまずメッセージボックスが表示される

作成者変更確認のメッセージが表示されるので、「はい」「いいえ」どちらかを選択する。

vbabooksaup005
作成者変更確認メッセージ

最初から新しいエクセルブックで書類作成していた場合は「いいえ」で良いですが、既定のテンプレ・フォーマットを使っていた場合は「はい」を選択して「作成者名」と「作成日」を自分にしておいた方が良いでしょう。

2.名前を付けて保存ダイアログが開かれる

次に、

作成したブックを作成者名と編集日(コンテンツの作成日時ではない)を付加して名前を付けて保存します。

vbabooksaup006
名前を付けて保存ダイアログ

「 -■■ ■230219」 作成者 ■■ ■ が23年2月19日 に保存したブックということですが、何の書類か分かる様にタイトルを付け加えてください。

3.保存完了です

最後に、

この例では、「サンプル書類 -■■ ■230219」として保存しました。

作成者が田中 駿さんなら「サンプル書類 -田中 駿230219」というイメージになります。

vbabooksaup007
保存先フォルダ

まとめ

vbabooksaup010

相手がいて提示する紙書類は、必ず誰が出したか何処が発行したかは必ず書かれるものです。

同様に、電子書類として、エクセルデータで相手に提出する場合やグループとして共有する場合など、誰が作成したかが一目でわかるようにしておくことも重要です。

そういった時にエクセルファイルのファイル名に作成者名を自動付加するこのマクロを利用いただけると思います。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min