教えて下さい!
会社のホームページにある情報を公開していて、その中に更新時間も載せております。その公開している文章は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のみの処理を記述すると上手く処理が行われます。何が原因なのでしょうか??
No.2ベストアンサー
- 回答日時:
Excelでhtmファイルを編集している時の現象ですよね。
こちらでは同現象が再現できません。新規Book(.htm)にWorkbook_BeforeSaveと Workbook_Open だけ記載して『手動保存』してみてください。
それでもBeforeSaveイベントは発生しないのでしょうか?
.xlsファイルの場合はどうでしょう。
_BeforeSaveプロシージャにブレイクポイントを設定してもそこを通らないのでしょうか?
新規BookでもBeforeSaveイベントが起きない場合、
念のためExcelをセーフモードで起動して試してみてください。
#ウィンドウズメニューから[ファイル名を指定して実行]
excel /s
セーフモード、新規Bookで問題ないなら、
・他のイベントプロシージャが関係している。
・他のアドインやマクロブックが影響している。
・(これは無いと思いますがイベントプロシージャ名の記入ミス。コードペイン上部のドロップダウンリストから選択してます?)
この回答への補足
返事が遅くなりまして大変申し訳ありませんでした。
また、回答いただきましてありがとうございます。
まず、新規Book(.htm)でも同様の現象が起きておりました。
ブレイクポイントを設定しても全くかすりもしませんでした。
Excelをセーフモードで立ち上げる前にアドインを全て取り外してみました。そうしましたら全てが上手く処理出来る様になってしまいました。
ローカルでも共有ファイルサーバー上でも上手く動いています。
さらに、その後に取り外したアドインを組み入れても処理されるようになりました。
いったい何だったんでしょう??
No.3
- 回答日時:
>いったい何だったんでしょう??
特にエラーが出るわけでもなく、BeforeSaveイベントが起きないという現象だったのですよね。
アドインが関係していたとしても、『その後に取り外したアドインを組み入れても処理されるようになりました。』との事ですし、
私自身、同事象に遭遇した事はありませんので原因は解りかねます。
取り敢えず、不具合が解消したようで良かったですね。
本ケースのような、通常では発生しないはずの不具合の場合、まずはどのレベルで障害が発生しているかの見極めが必要だという事なのでしょう。
・特定Bookでの現象か。 …新規Bookで確認してみる。
・特定ユーザー環境での現象か。 …セーフモードあるいは別ユーザーでログインして確認してみる。
・特定端末での環境か。 …(可能なら)別端末で確認してみる。
など。(OSやOfficeのバージョン差異やネットワーク環境が絡めばもっと複雑になるでしょうけど)
そういった誘導的なアドバイスができれば、もうちょっと早く解消できたかもしれなかったですね。失礼しました。
end-uさん、本当にありがとうございました。
>そういった誘導的なアドバイスができれば、もうちょっと早く解消できたかもしれなかったですね。失礼しました。
↓
そんなとんでもないですよ。色々な段階のエラー解消法を教えてくれたので、解決に向かうことが出来たのですから。
今度不具合が出たら同様の手順で調べてみます。
今日もきちんと動作しており、ホッとしております。
ホントにありがとうございました。
No.1
- 回答日時:
Worksheetは1つしかないのでしょうか?
そのThisWorkbookモジュールのコードではRangeの親が指定されていないので、その時のActiveSheetになってしまいますが、
その点は大丈夫ですか?
また、開いた時に最終保存日時を取れば良いだけのような気もしますが、どうなのでしょう。
Private Sub Workbook_Open()
MsgBox ThisWorkbook.BuiltinDocumentProperties("Last Save Time")
End Sub
この回答への補足
ご回答ありがとうございます。
savaを記載しているモジュール以外にはsheetの指定をしておりますが、実際の運用は1book-1sheetですので大丈夫かと…。
sheet指定していたりしてなかったり、気まぐれな作りになってしまってましてスミマセン。。。
ちなみに、sheet指定の記載も試しては見ましたが、同じ動きです。
>また、開いた時に最終保存日時を取れば良いだけのような気もしますが、どうなのでしょう。
とコードを記載していただきましてありがとうございました。
しかしながら、ご提案の開いた際に最終保存日時の取得ではホームページに公開する際に、前回の更新日時をお知らせすることになってしまいますので適用できないのです。。。
いただいたコードはMsgBoxですから編集者に対しての確認メッセージになっているみたいですが、私が書いているSub MSGDISP()もきちんと動作はしております。(これはおまけみたいなものですけど…)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel VBA】自動的にバックア...
-
Excel VBAでほかのアプリケーシ...
-
MPLABのソースファイルが保存で...
-
読み取り専用ファイルを上書き...
-
タイトルバーやメニューバーの...
-
VB.NETでEXCELファイルを開き、...
-
VBSでWordの文字色変え
-
IEのダウンロードファイル保存...
-
Corel Digital Studioの動画をS...
-
onedriveで同期解除をしたら、...
-
論文に載せるグラフを作成したい
-
Windowsファイルエクスプローラ...
-
壁紙・スクリーンセーバーの削...
-
共有しているファイルを削除し...
-
USBデータの消失
-
ファイルの保存をOnedriveのク...
-
ごみ箱から元に戻したファイル...
-
大量のファイルの中から壊れた...
-
USBメモリにフォルダをコピーす...
-
ls であるファイル以外を表示し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
読み取り専用ファイルを上書き...
-
Excel VBAでほかのアプリケーシ...
-
Corel Digital Studioの動画をS...
-
コマンドプロンプトでデスクト...
-
Excel VBAで作成したマクロをxl...
-
エクセルで「名前を付けて保存...
-
ExcelVBAでデスクトップのPATH...
-
VBA メモ帳の上書き保存がしたい
-
VBAで、強制保存してブックを閉...
-
irvineを利用してVBAからダウン...
-
VBScriptでのSaveAsについて
-
webページの特定の部分だけ消し...
-
VBScriptで日本語が変です
-
Pivot table で集計されたデー...
-
AccessVBAでレポートをPDFで出力
-
vbaでIEの名前を付けて保存(A)...
-
エクセル:マクロ:保存時に連...
-
ファイルのダウンロード保存先...
-
htmlから取り込んだ を消...
-
印刷と保存の仕方をVBAマクロの...
おすすめ情報