以下の内容はhttps://www.limecode.jp/entry/syntax/beforesave-aftersaveより取得しました。


ブックの保存時にマクロを自動実行する - BeforeSave

ブックの保存時にマクロを自動実行する方法を解説します。

保存の直前に実行したい場合はBeforeSaveイベント
保存の直後に実行したい場合はAfterSaveイベントを使用します。

保存の直前に処理を実行する - BeforeSave

基本構文

以下のコードをThisWorkbookモジュールに記述します。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    ' ここに保存直前に実行したい処理を記載する

End Sub

引数「SaveAsUI」は判定用の引数で、
Trueになっていれば「名前を付けて保存」、
Falseになっていれば「上書き保存」であることが分かります。

引数「Cancel」は設定用の引数で、
Trueを渡すことで保存を中止させることが出来ます。

サンプルコード

' 上書き保存を禁止するマクロ
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    If SaveAsUI = False Then
        MsgBox "このマクロは上書き保存することはできません。"
        Cancel = True
    End If

End Sub

解説

保存の直前に処理を実行するには、BeforeSaveプロシージャを使用します。


プロシージャ名、引数名を変更することはできません。

第1行は変更せずすべてこのままのコードを記述してください。


このプロシージャの引数Cancelを使用することで、
保存を中止させることも出来ます。

保存してよいかどうかを制御するマクロを作りたいときは、
このプロシージャを活用してください。


なお、このBeforeSaveプロシージャなどのイベントプロシージャは、
ThisWorkbookモジュールの上部選択肢から選ぶことが出来ます。

ThisWorkbookの選択肢

BeforeSaveの選択


これを選択すると、↓の状態で空のイベントプロシージャが挿入されます。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

End Sub

 
イベントプロシージャの構文はWEB検索で探したりする必要はなく、
使うときにこの選択肢から選べばよいことを覚えておきましょう。

保存の直後に処理を実行する - AfterSave

基本構文

以下のコードをThisWorkbookモジュールに記述します。

Private Sub Workbook_AfterSave(ByVal Success As Boolean)

    ' ここに保存直後に実行したい処理を記載する

End Sub

引数「Success」は判定用の引数で、
正常に保存が完了したかを判定することが出来ます。

サンプルコード

' 保存失敗をログに記憶するマクロ
Private Sub Workbook_AfterSave(ByVal Success As Boolean)

    If Success = False Then
        Cells(1, 1) = "保存失敗:" & Format(Date, "yyyymmdd")
    End If

End Sub

解説

保存の直後に処理を実行するには、AfterSaveプロシージャを使用します。

こちらは「保存が失敗したかどうか」を判定する機能があるため、
それを検知して記録する必要があるときなどに使用してください。


このプロシージャもBeforeSaveプロシージャと同様、
ThisWorkbookモジュールの上部選択肢から選ぶことが出来ます。

構文を覚える必要はありませんので、使用時はこの選択肢を活用してください。




以上の内容はhttps://www.limecode.jp/entry/syntax/beforesave-aftersaveより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14