【エクセル】VBAで自動保存プログラムを作ってみる

DIY エクセルVBA

今回はマイクロソフトエクセルを使って「自動保存プログラム」を組んでいきたいと思います。

この記事の内容

こんにちは、Fujiya(@fujiya_xyz)です。

僕は経験があるのですが、エクセルで作業をした後に保存をし忘れる・・・・ってことないですか?

「あ・・・やっちゃったな、これ」という感じで、もう1度同じ作業をするという2度手間です。最悪。

この記事で紹介する自動保存プログラムを使うと、このストレスが無くなります。是非参考にしていただきたいと思います。

【エクセルVBA】自動保存プログラムでストレスを無くそう

なんか難しそう・・・って思うかもしれませんが、メチャクチャ簡単です。

これからVBAをやってみたいという人はVBAで自動保存プログラムを組んでみることをオススメします。

今回は、僕が以前に作成したVBA入門用プログラム「入力自動化ツール」の記事を元にして説明をしていきたいと思います。読んだことの無い方はそちらを参考にしていただくとスムーズだと思います。この記事を読んだ後でも問題ないです。

入力自動化ツールの作成記事➀

Saveメソッドを使う(上書き保存)

「ファイルを保存する」というプログラムには『Saveメソッド』というコードを使います。

ワークブック.Save

これを記述するだけで『上書き保存』されます。

詳しいコードの書き方は下の「自動保存プログラム」のコードを記述で書いているので参考にしてください。

自動保存を行うタイミング

基本的には「1つの作業が終了した後に保存を行う」のがベストだと思います。

例えば、「データを登録をした後」「書類にデータを転記をした後」「印刷すると同時」などでしょうか。

いつ自動保存するのか

上画像でいうと、データを入力し終わって”登録ボタンを押したとき“がベストですね。

「自動保存プログラム」のコードを記述

実際に「登録ボタンを押したとき」の部分に、自動保存のコードを記述していきます。

コード記述に関しては【エクセル】vba初心者向け『入力フォーム』の作り方”コード記述編”を参考にしていただくと分かりやすいと思います。

登録ボタンを押したときのコードは以下になります。

Private Sub 登録ボタン_Click()
'変数
最終セル = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row + 1

'入力の処理
Worksheets("Sheet1").Cells(最終セル, 1).Value = 氏名テキストボックス.Text
Worksheets("Sheet1").Cells(最終セル, 2).Value = ふりがなテキストボックス.Text
Worksheets("Sheet1").Cells(最終セル, 3).Value = 性別コンボボックス.Text
Worksheets("Sheet1").Cells(最終セル, 4).Value = 住所テキストボックス.Text

'登録した後、テキストボックスを空欄にする処理
氏名テキストボックス.Text = ""
ふりがなテキストボックス.Text = ""
性別コンボボックス.Text = ""
住所テキストボックス.Text = ""
End Sub

このプログラムの動作を訳していくと・・・。

  1. 登録ボタンクリック
  2. 入力フォームのデータをシートに入力
  3. 入力フォームを空にする

上のどこに「保存」を入れるのかというと、の「シートに入力」の後、もしくは3の「フォームを空にした」後です。

この動作の目的が『フォームを使ってシートにデータ入力すること』なので、シートに入力された後であれば、ぶっちゃけどこで保存しても良いわけです。

保存するコードですがThisworkbook.Saveを入力するだけとなります。

今回は「全ての動作が終了した後に保存」という流れを作ります。なので、一番下のEnd Subの上に記述する感じです。これだけ。

登録ボタンを押せば自動保存されます。完成です。

簡単すぎて拍子抜け・・・という感じですが、たったこれだけで大幅に効率が上がると思います。

【エクセルVBA】自動保存プログラムでストレスを無くそう|まとめ

今回はエクセルVBAで「自動保存プログラム」を作成しました。

メリットとしては「保存し忘れの防止」「作業高速化」の2つです。

シンプルですがメリットは業務効率は間違いなく上がりますね。

コードの”まとめ”は以下です。

Private Sub 登録ボタン_Click()
'変数
最終セル = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row + 1

'入力の処理
Worksheets("Sheet1").Cells(最終セル, 1).Value = 氏名テキストボックス.Text
Worksheets("Sheet1").Cells(最終セル, 2).Value = ふりがなテキストボックス.Text
Worksheets("Sheet1").Cells(最終セル, 3).Value = 性別コンボボックス.Text
Worksheets("Sheet1").Cells(最終セル, 4).Value = 住所テキストボックス.Text

'登録した後、テキストボックスを空欄にする処理
氏名テキストボックス.Text = ""
ふりがなテキストボックス.Text = ""
性別コンボボックス.Text = ""
住所テキストボックス.Text = ""

'保存する
Thisworkbook.Save

End Sub

正しく動作しない場合には誤字があると思うので確認をしてみてください。

まずはコピペで良いので動作を確認していただき、次に自分でコードを打ってみることをおすすめします。

今回の記事は以上で終了になります。
最後まで読んでいただきましてありがとうございました。