Web Analytics Made Easy - StatCounter

Economics Of TEC

RPA,経済学,IT技術などに関する情報を発信しています。

【Excel VBA】ファイルを保存する直前に自動でマクロを起動する方法

f:id:WillSpecter:20200810141628j:plain

 やりたいこと

ファイルを閉じる前にフィルターを解除する

Excelファイルで以下のようなデータがあるとします。

f:id:WillSpecter:20200912163222p:plain

このように結果列に「合格」でフィルターをかけている状態で保存してあると、

RPAで操作した場合などにデータが壊れてしまうことがありました。

 

そのためファイルを保存して閉じる前に必ずフィルターを解除するという処理をVBAを使ってやってみたいと思います。

 

(↓保存する直前に必ずフィルター全解除)

f:id:WillSpecter:20200912163116p:plain

ポイント

ThisWorkbookにVBAを記述

通常VBAを記述する場合は、標準モジュールを追加して記述しますが、

今回はThisWorkbookを選択して処理を記述します。

f:id:WillSpecter:20200912164037p:plain

ThisWorkbookを選択後、右上の赤枠内はWorkbookBeforeSaveを選択します。

 

BeforeSaveは保存する直前に記述されているマクロを起動するという意味になります。

このような処理はイベント処理と呼ばれています。

 

イベント処理には他にも、

・ワークブックを閉じる前に処理を行うBeforeClose

・ワークブックを開いた時に処理を行うOpen

など様々なイベントがあります。

 

今回はBeforSaveを選択することで自動的に以下のコードが記述されるので、

保存する直前に行う処理を記述していきます。

f:id:WillSpecter:20200912165537p:plain

 

記述するコードは以下の通りです。
VBA コード】

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    
   'テスト結果シートがフィルターモードであれば全部見える状態にする
    If Worksheets("テスト結果").FilterMode Then Worksheets("テスト結果").ShowAllData

End Sub

 記述するコードは1文で書くことができます!

今回はIf文を1行で書いたので、End Ifで閉める必要はありません。

 

上記のコードが書けたら、フィルターを設定した状態で保存を行ってみてください。

自動的にフィルターが解除されていると思います(^^)

 ひとこと

RPAなどでExcelファイルを操作する時に、Excelのデータにフィルターがかかっているとデータが壊れてしまう場合が結構あります。

 

お客さんに「Excelを保存して閉じる前にフィルターを解除してくださいね!」と頼んでも忘れてしまうこともあります。

 

そんな時はマクロを使って、保存する前に自動的にフィルターを解除するという処理を組んでしまいましょう!

 

今回のようにRPAでの開発は、部分的にマクロと組み合わせたりすることで、より使いやすくなるのでオススメです!

 

他にもVBAについて紹介しているのでぜひ参考にしてみてください!

it-rpa.hatenablog.com

it-rpa.hatenablog.com

it-rpa.hatenablog.com

it-rpa.hatenablog.com

it-rpa.hatenablog.com

it-rpa.hatenablog.com

it-rpa.hatenablog.com

できるシリーズはフルカラーでかなり細かいところまで画像を使って解説してあるのでオススメです!