#実現したいこと
Excel2010において、上書き保存したタイミングで、内容(書式設定だけとかセルの設定だけを含む)が変更されたか調べ、内容が変更された場合には変更日をセルに出力することはできますでしょうか?
ネットで調べているのですがいまいち分からなくて
変更したか調べるシートは複数枚あり(1)(2)(3)というid形式で指定したいと思っております。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
一般的なExcelのシート機能だけで実現するのは難しいと思いますが、VBAマクロを利用すれば実現できると思います。
今回の質問にVBAのタグはついていませんでしたが、VBA利用でのアドバイスをさせていただきます。
保存のタイミングでマクロ処理
ブックを保存するタイミングでマクロを実行したい場合は、対象のブックのBeforeSave
イベントを利用します。
VBE(VisualBasicEditor)の画面で対象ブックのThisWorkBook
を開き、Workbook_BeforeSave
イベントに実行したい処理を記述すれば保存のタイミングで実行されます。
⇒参考
変更のチェック
シート内容を変更した際には、対象シートのイベントとしてChange
イベント、またブックのイベントとしてSheetCange
イベントが発生します。
今回は各シート共通の処理となるので、ブックのSheetChange
イベントを利用すればいいと思います。
保存する時ではなくシート内容変更時にその時刻をセル出力するのでよければ、Workbook_SheetChange
イベントで変更されたシートに日時を出力してしまえば手っ取り早いです。
※この場合、保存される時間は最終変更日時になります。
(保存するまでに複数のシートを変更した場合、シート毎に最後に編集した時間が保存されます。)
あくまで保存のタイミングで日時を出力したいのであれば、SheetChange
イベントでは日時を空欄で出力するなどしておき、先に紹介したBeforeSave
イベントのタイミングで全シートで日時が空欄になっているセルに保存日時を出力する、といったことを行えばよいと思います。
※この場合、保存される時間は変更を保存した日時になります。
(保存するまでに複数のシートを変更した場合、保存した日時で統一されます。)
サンプルコード
'ブック内のシートが変更された時に発生するイベント Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 'Changeイベント内でセル内容を書き換えることによって、またChangeイベントが発生してしまうため、 '処理中のイベント発生をFalseにしてからセル出力します。 Application.EnableEvents = False '変更のあったシートのC1セルを空欄にします。 Sh.Range("C1").Value = "" ''変更のあったシートのC1セルに現在日時(編集日時)を出力します。 ''⇒この場合、保存のタイミング(BeforeSaveイベント)では特に処理する必要はありません。 'Sh.Range("C1").Value = Now Application.EnableEvents = True End Sub 'ブックが保存される前に発生するイベント Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim sht As Worksheet 'BeforeSave処理中のイベント発生をFalseにしてからセル出力します。 Application.EnableEvents = False 'ブック内のすべてのシートをループ処理 For Each sht In Me.Worksheets If sht.Range("C1").Value = "" Then 'C1セルが空欄だったら現在日時(保存日時)を出力します。 sht.Range("C1").Value = Now End If Next Application.EnableEvents = True End Sub
以上、勝手にVBAでのアドバイスをさせていただきましたが、参考になれば幸いです。
投稿2017/10/23 03:26
総合スコア3013
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
関連した質問
Excel2010 内容を変更して上書き保存した日をセルに出力
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。