プロが教えるわが家の防犯対策術!

Excelにて印刷する場合,フッダ-編集にてさまざまな値を表示できますが,ファイルの「変更日付」をフッダ-に指定することは可能でしょうか?&[日付]や&[時刻]はリアルな日時になってしまいます。エクスプローラのファイルプロパティで参照できる「変更日付」を指定する方法をご存知でしたらご教授下さい。

A 回答 (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
    • good
    • 0
この回答へのお礼

sakenomoさん
ありがとうございます。指定方法でなんとか難局を抜けました。設計書を印刷した紙を承認する中で,改竄を防ぐため電子ファイルの日付と印刷日付を一致させることを考えておりました。

お礼日時:2003/06/22 22:23

#6です。

これは質問者さんではなく、#7さんへ。

>それでは、ThisWorkBookモジュールの、

いいアイディアだと思います。
ですがNowを使うためでしょうか、プロパティの方の更新日時は、フッターの時刻の1秒後になってしまうのです。
僕のパソコンの処理速度が遅いだけだったりして。(^_^;)

いろいろとツッコミを入れて、失礼しました。
    • good
    • 0

#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回目からは前回の更新日時が印刷されるはずです。)
    • good
    • 0

#5です。



>マクロを実行した時点で、更新日時が変わってしまいませんか。

これも正しくはありませんでした。

既存のファイルを印刷したい場合、FileDateTimeが返す更新日時は、そのファイルを開いた時間になるようです。ファイルに何も変更を加えずに閉じれば、更新日時は以前のものに戻ります。

ファイルの内容を変更すると更新日時は、そのファイルを閉じた、あるいは上書き保存した時間になるようです。

ですから、#4さんのマクロを使う前に、まず上書き保存をし、そのファイルを”変更を保存せずに”閉じる必要があります(マクロを使った時点でフッターの設定が変更されているから)。こうすることで、印刷された日時と、ファイルのプロパティで表示される更新日時が合うと思います。

上書き保存を自動でやる機能を入れたマクロは、#4さんが書いてくださると思います。(^^)

#僕が書いたマクロは、既存のファイルを印刷する場合のためのものです。必ず印刷するファイルが閉じている状態から始めてください。
#フッターの設定が変更されているわけですから、閉じる時点で、エクセルがファイルの変更を保存するかどうか聞いてきます。ここで「いいえ」にしないと、更新日時が変わってしまいますのでご注意ください。

なかなか面倒なものですね・・・。
    • good
    • 0

#2,#3です。



たびたびすいません。
またエラーになりました。こんどこそ!


Option Explicit

Sub footerTest()
ActiveSheet.PageSetup.RightFooter = "更新日時: " & Format(FileDateTime(ThisWorkbook.Path & "\" & ThisWorkbook.Name), "YYYY/MM/DD HH:MM:SS")

End Sub
    • good
    • 0

#2です。


すいません。間違いました。訂正します。
パスの指定がなかったので、実行するとエラーになります。
テストしてなかったもんで、ご迷惑をおかけしました。
次のコードに修正してください。


Option Explicit

Sub footerTest()
 ActiveSheet.PageSetup.RightFooter = _

 "更新日時: " & _
 Format(FileDateTime(ThisWorkbook.Path & "\" & ThisWorkbook.Name), "YYYY/MM/DD HH:MM:SS")

End Sub
    • good
    • 0

できます。

ただしVBAを使用します。

エラー回避処理は組み込んでいませんので
ただし、保存されていないファイルで実行すると、エラーになります。


Option Explicit

Sub footerTest()
ActiveSheet.PageSetup.RightFooter = "更新日時: " & Format(FileDateTime(ThisWorkbook.Name), "YYYY/MM/DD HH:MM:SS")
End Sub
    • good
    • 0

こんにちは



無理だと思われます。
ファイルに保存しなくても印刷出来ますし、・・・。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!