- ベストアンサー
Excelのフッダ-に「ファイルの変更日付」を印刷設定可能?
Excelにて印刷する場合,フッダ-編集にてさまざまな値を表示できますが,ファイルの「変更日付」をフッダ-に指定することは可能でしょうか?&[日付]や&[時刻]はリアルな日時になってしまいます。エクスプローラのファイルプロパティで参照できる「変更日付」を指定する方法をご存知でしたらご教授下さい。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
#4さんの方法だと、マクロを実行した時点で、更新日時が変わってしまいませんか。#4さんのを参考に手を加えてみました。 新しいブックで、以下のマクロを実行してみてください。 ○マクロ"ファイル選択"を実行するとダイアログが現れるので、印刷するファイルを選択します。すると、そのファイルが開きます。 ○印刷するシートを選択します。 ○マクロ"フッター"を実行します。(目的以外のシートを選択しないように気をつけてください) Sub ファイル選択() fName = Application.GetOpenFilename("エクセル ファイル (*.xls), *.xls") If fName <> False Then Worksheets(1).Range("A1").Value = FileDateTime(fName) Workbooks.Open fName End If End Sub Sub フッター() ActiveSheet.PageSetup.RightFooter = _ "更新日時: " & ThisWorkbook.Worksheets(1).Range("A1").Value End Sub
その他の回答 (7)
- sakenomo
- ベストアンサー率52% (35/67)
#6です。これは質問者さんではなく、#7さんへ。 >それでは、ThisWorkBookモジュールの、 いいアイディアだと思います。 ですがNowを使うためでしょうか、プロパティの方の更新日時は、フッターの時刻の1秒後になってしまうのです。 僕のパソコンの処理速度が遅いだけだったりして。(^_^;) いろいろとツッコミを入れて、失礼しました。
- happypoint
- ベストアンサー率36% (521/1422)
#2,#3,#4です。 >FileDateTimeが返す更新日時は、そのファイルを開いた時間になるようです なんかそのようですね。 やってみたら確かにそうなりました。 それでは、ThisWorkBookモジュールの、 WorkbookのBeforeSaveイベントに、 現在日時でフッタを設定するマクロをコピペしたらどうでしょうか。 こんな具合に。 Option Explicit Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ActiveSheet.PageSetup.RightFooter = "更新日時: " & Format(Now(), "YYYY/MM/DD HH:MM:SS") End Sub マクロは保存時に実行されますので、 初めて実行するときは、あらかじめ保存しないといけません。 (2回目からは前回の更新日時が印刷されるはずです。)
- sakenomo
- ベストアンサー率52% (35/67)
#5です。 >マクロを実行した時点で、更新日時が変わってしまいませんか。 これも正しくはありませんでした。 既存のファイルを印刷したい場合、FileDateTimeが返す更新日時は、そのファイルを開いた時間になるようです。ファイルに何も変更を加えずに閉じれば、更新日時は以前のものに戻ります。 ファイルの内容を変更すると更新日時は、そのファイルを閉じた、あるいは上書き保存した時間になるようです。 ですから、#4さんのマクロを使う前に、まず上書き保存をし、そのファイルを”変更を保存せずに”閉じる必要があります(マクロを使った時点でフッターの設定が変更されているから)。こうすることで、印刷された日時と、ファイルのプロパティで表示される更新日時が合うと思います。 上書き保存を自動でやる機能を入れたマクロは、#4さんが書いてくださると思います。(^^) #僕が書いたマクロは、既存のファイルを印刷する場合のためのものです。必ず印刷するファイルが閉じている状態から始めてください。 #フッターの設定が変更されているわけですから、閉じる時点で、エクセルがファイルの変更を保存するかどうか聞いてきます。ここで「いいえ」にしないと、更新日時が変わってしまいますのでご注意ください。 なかなか面倒なものですね・・・。
- happypoint
- ベストアンサー率36% (521/1422)
#2,#3です。 たびたびすいません。 またエラーになりました。こんどこそ! Option Explicit Sub footerTest() ActiveSheet.PageSetup.RightFooter = "更新日時: " & Format(FileDateTime(ThisWorkbook.Path & "\" & ThisWorkbook.Name), "YYYY/MM/DD HH:MM:SS") End Sub
- happypoint
- ベストアンサー率36% (521/1422)
#2です。 すいません。間違いました。訂正します。 パスの指定がなかったので、実行するとエラーになります。 テストしてなかったもんで、ご迷惑をおかけしました。 次のコードに修正してください。 Option Explicit Sub footerTest() ActiveSheet.PageSetup.RightFooter = _ "更新日時: " & _ Format(FileDateTime(ThisWorkbook.Path & "\" & ThisWorkbook.Name), "YYYY/MM/DD HH:MM:SS") End Sub
- happypoint
- ベストアンサー率36% (521/1422)
できます。ただしVBAを使用します。 エラー回避処理は組み込んでいませんので ただし、保存されていないファイルで実行すると、エラーになります。 Option Explicit Sub footerTest() ActiveSheet.PageSetup.RightFooter = "更新日時: " & Format(FileDateTime(ThisWorkbook.Name), "YYYY/MM/DD HH:MM:SS") End Sub
- arukamun
- ベストアンサー率35% (842/2394)
こんにちは 無理だと思われます。 ファイルに保存しなくても印刷出来ますし、・・・。
お礼
sakenomoさん ありがとうございます。指定方法でなんとか難局を抜けました。設計書を印刷した紙を承認する中で,改竄を防ぐため電子ファイルの日付と印刷日付を一致させることを考えておりました。