1 エクセルファイルを閉じると、自動的に上書き保存する
エクセルファイルを閉じようとしたタイミングで、マクロが入っているファイルを保存します。
ThisWorkbook.Save
2 所定のフォルダにも保存する
もう1ヵ所、別のフォルダに保存します。マクロにファイルパスを記載する必要があります。
ファイルパスを調べるときは、いったん手作業で保存したいフォルダを開きます。そしてアドレスバーからパスをコピーするのが効率的です。
パスの最後にはファイル名を追記する必要がありますので注意してください。今回の例では僕のパソコンのフォルダなので「terasawa」というフォルダ名が入っています。そのまま使わず、必ず皆さんのパソコンのファイルパスをコピーしてください。
毎回同じフォルダへ、同じ名前でファイルを保存するにはこのように書きます。
ActiveWorkbook.SaveAs "C:¥Users¥terasawa¥macro¥excel.xlsm"
3 ファイルを同じ名前で保存しようとした場合のエラーを処理
別フォルダに保存しようとするとき、同じ名前のファイルだと2回目以降はアラートが出ます。このとき「はい」を選ぶと上書きされますが「いいえ」や「キャンセル」を選ぶとエラーが出てしまいます。
これに対応するため、エラーの場合は別処理をさせます。
On Error GoTo XXX
処理1
Exit Sub
XXX:
処理2
処理1には2のActiveWorkbook.SaveAs "C:¥Users¥terasawa¥macro¥excel.xlsm" を入れます。
処理2には「処理を中止しました」のようなメッセージを入れるといいでしょう。
XXXに入る文字は何でもよいですが、2ヵ所を同じにする必要があります。これは「エラーの場合は処理1をスキップしXXXに飛び、処理2を行う」という意味です。処理1の後に「Exit Sub」を入れ忘れないようにしてください。忘れると処理1に続いて処理2も実行されてしまいます。
完成させて動かしてみよう
マクロ作成シートに記入していきましょう。
このマクロはボタンが必要ありません。エクセルファイルを閉じたときに指定したフォルダに自動で保存されていれば成功です!
再度試して、2回目以降にエラーが出ないか確認してください。
1 ThisWorkbookではなく標準モジュールに書いている(何も起きません)
2 BeforeCloseが選ばれていない(何も起きません)
3 ActiveWorkbookやSaveAsの綴りが間違っている
4 パスが" "(ダブルクォーテーション)で囲まれていない
5 パスが間違っている(ご自身のPCのパスにしてください)
6 :(コロン)が;(セミコロン)になっている
(本稿は、寺澤伸洋著『4時間のエクセル仕事は20秒で終わる』を抜粋、再構成したものです)
寺澤伸洋(てらさわ・のぶひろ)
1976年、大阪府生まれ。灘高校、東京大学経済学部卒業後、日系メーカーで17年間勤務。経理や営業、マーケティング、経営企画などに携わり、独学で覚えたエクセルマクロを用いて様々な分析や業務改革を行う。2017年、GAFAの日本法人のうちの1社へシニアマネージャー(部長)として転職。これまでエクセルマクロを用いた業務改善などで数多くの社内表彰を受けている。手作業では不可能なほど大量のデータを、短時間で分析しやすく加工したことが評価され、社内エクセルマクロ講習会の講師として延べ200人以上に講座を実施。エクセルマクロについて1から10まで教える詰め込み型の学習ではなく、仕事に必要な部分だけを効率的に学べる講座として満足度98%の高い評価を受けている。