教えて下さい!
会社のホームページにある情報を公開していて、その中に更新時間も載せております。その公開している文章はEXCELを利用しHTMファイルで保存しております。ファイルは社内の共有ファイルサーバーに保存されており、複数にて共有しています。そのEXCEL HTMファイルを編集し、(上書き)保存をした際、その時の時間を更新日時としてあるセルに表示させております。自身でVBAを以下の組みました。
(保存前処理の他、開いた時の列幅処理+前回更新日時の表示も行っています)
Option Explicit
---------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim KOUSHINBI As Date
KOUSHINBI = Now
Range("E2").Value = KOUSHINBI
End Sub
---------------------------------------------------------------
Private Sub Workbook_Open()
MSGDISP '前回更新時間の表示
Dim TODAY As Date, KOUSHIN As Date
KOUSHIN = DateValue(Range("E2").Value)
TODAY = Date
If KOUSHIN <> TODAY Then
Columns("B:D").ColumnWidth = 0
End If
End Sub
--------------------------------------------------------
'以下標準モジュールで
Sub MSGDISP()
Dim A As Date
A = Worksheets("DAILY").Range("E2").Value
MsgBox ("前回の更新日時は" & A & "です")
End Sub
---------------------------------------------
もちろん、 Workbook_BeforeSaveと Workbook_Openは「THIS WORKBOOK」モジュールに記載しております。
これを実行すると、BOOK OPENの処理は行われるのですが、保存時の更新日時の処理が全く起きてくれません。
新規でEXCELを作成し、Workbook_BeforeSaveのみの処理を記述すると上手く処理が行われます。何が原因なのでしょうか??
Worksheetは1つしかないのでしょうか?
そのThisWorkbookモジュールのコードではRangeの親が指定されていないので、その時のActiveSheetになってしまいますが、
その点は大丈夫ですか?
また、開いた時に最終保存日時を取れば良いだけのような気もしますが、どうなのでしょう。
Private Sub Workbook_Open()
MsgBox ThisWorkbook.BuiltinDocumentProperties("Last Save Time")
End Sub
補足
返事が遅くなりまして大変申し訳ありませんでした。 また、回答いただきましてありがとうございます。 まず、新規Book(.htm)でも同様の現象が起きておりました。 ブレイクポイントを設定しても全くかすりもしませんでした。 Excelをセーフモードで立ち上げる前にアドインを全て取り外してみました。そうしましたら全てが上手く処理出来る様になってしまいました。 ローカルでも共有ファイルサーバー上でも上手く動いています。 さらに、その後に取り外したアドインを組み入れても処理されるようになりました。 いったい何だったんでしょう??