Exce VBAブック保存前に処理

Excel VBAでブックを保存する直前に処理を実行する記録です。

ブックを保存する前に処理を実行するには「BeforeSave」イベントを使います。

下図はExcel2016です。

< スポンサーリンク >





「BeforeSave」構文

Workbook_BeforeSave(SaveAsUI, Cancel)

ブックが保存される前に発生します。

SaveAsUI=必須。ブックに保存する必要がある変更が行われたために[名前を付けて保存]ダイアログボックスが表示される場合はTrue。

Cancel=必須。イベントが発生するとFalseが渡されます。イベントプロシージャでこの引数にTrueを設定すると、プロシージャが終了しても保存されません。

 

「BeforeSave」使用例

ブックを保存する前にB2セルに何も入力されていない場合、「B2のセルに値がありません。保存しますか?」というメッセージを表示し、「はい」なら保存し、「いいえ」なら保存をキャンセルするようにしてみます。

VBEを開き、「TshiWorkbook」をダブルクリックします。

ExcelVBA保存前

 

左側のオブジェクトボックスで「Workbook」を選択し、右側のプロシージャボックスで「BeforeSave」を選択します。

ExcelVBA保存前

 

「Private Sub Workbook_Open()」の部分は不要なので消します。

ExcelVBA保存前

 

下記のように書き込みます。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim a As Variant
    If ActiveSheet.Range(“B2”).Value = “” Then
        a = MsgBox(“B2のセルに値がありません。保存しますか?”, vbYesNo)
        If a = vbNo Then
            Cancel = True
        End If
    End If
End Sub

ExcelVBA保存前

 

ブックを保存してみます。

ExcelVBA保存前

 

「B2のセルに値がありません。保存しますか?」というメッセージが出ました。

ExcelVBA保存前

 

こんな風にブックを保存する直前に何かの処理をさせることができます。

 

< スポンサーリンク >※広告先のお問い合わせは広告主様にお願いします