VBAで自動保存したくないのに、勝手にオンになってしまっている。
特に、OFFICE365になってから、デフォルトの設定で自動保存がオンの状態であるため、
- 閉じると勝手に保存されている。
- 終了時に自動保存がかかってしまう。
また定期的に上書き保存がかかってしまうので、VBAでファイルを保存せずに閉じたい場合なんかは、非常に困ります。
そこで、自動保存を「オフ・停止」するためのVBAコーディングについて解説していきます。
自動保存の設定画面について
実際に画面で設定項目位置を確認しておきましょう。
1.2013年以前バージョンの自動保存設定画面
■【2013年以前バージョンの自動保存設定画面】
2.Office365の自動保存設定画面
■Office365(2016以降)の自動保存設定画面
<Office365(2016以降)の自動保存設定位置>
エクセルを開いた後、左上に表示されています。
このように、画面の使用も大きく変わっています。これに伴って、メソッドも変更されているに違いありません。
VBAで自動保存を解除する(オフする)2つの記述方法
VBAでコーディングする際、自動保存を解除・オフにするのには2つの方法があります。
- ActiveWorkbook.EnableAutoRecover = False '・・・従来
- ActiveWorkbook.AutoSaveOn = False ’・・・最新
EnableAutoRecoverは、2013以前のOfficeのバージョンで利用可能なメソッドであるのに対して、「AutoSaveOn」は、自Office365で出てきているメソッドなので、新たなOfficeをご利用の方は注意が必要です。
「AutoSaveOn」のメソッドが有効になっている場合、これらのイベントは、ユーザーの操作なしで定期的かつ自動的に発生します。
特に、Office365へ移行された直前は、この自動保存が「有効化」されていますので、マクロなどで利用される際には、設定の確認しておきましょう。
EnableAutoRecoverとAutoSaveOnの2つの違い
「EnableAutoRecoverとAutoSaveOn」のどちらも、基本的な利用目的は「自動保存」なので同じですが、決定的な違いがあります。
それは、「AutoSaveOn」メソッドは2016年以降に作成されているため、それ以前のバージョンではサポートされていない。
という点にあります。
マクロでAutoSaveOnメソッドを実行しても、「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」
の表示が出ます。ちなみにAutoSaveOnは、Office2013ではサポートされていませんでした。
メソッド | 対応時期 | Ofiice適応バージョン |
EnableAutoRecover | 2013年以前 | Office2013以前のバージョンに対応 |
AutoSaveOn | 2016年以降 | Office2016・Office365・OneDriveに対応 |
なので、バージョンに合わせて、どちらの記述を通すかの切り分けが必要になりそうですね。
ちなみに、こうした問題を解決する場合には、下記によるソース記述が有効です。
➡【VBA】AutoSaveOnでエラー「メソッドをサポートしていません。」の回避処理
【VBA】AutoSaveOnでエラー「メソッドをサポートしていません。」の回避処理
OFFICE365やOne Driveの影響について
この「AutoSaveOn」メソッドは、Office365の移行に伴い、変更されたメソッドになります。そのため、Office365およっびOneDrive等のクラウドによるサービスへの影響に対しても、下記のようにMicrosoft社が明示しております。
【AutoSave の概要】
ファイルがクラウド (OneDrive、OneDrive for Business、または SharePoint Online) でホストされている場合、AutoSave を使用すると、ユーザーの編集内容を自動的かつ継続的に保存できます。 ファイルが他のユーザーと共有されている場合、その変更は、このユーザーのバージョンのファイルにマージされます。 AutoSave がオフの場合、ユーザーの変更がクラウドに保持され、このユーザーが他のユーザーの変更を受け取る場合は、保存を手動でトリガーする必要があります。
参考文献:Microsoft-自動保存がアドインおよびマクロに与える影響について
そのため、VBAやマクロで処理を行う際には、Office2013以前のバージョンを利用されているユーザーは、この「AutoSaveOn」のメソッドがサポートされていないため、動作しませんので覚えておきましょう。
まとめ
このように、自動保存を設定する際には、新たなOffice365のバージョン移行に伴って、非常に利用しやすくなったように感じます。
しかし、VBAからの直接自動保存を解除するためには、まだ旧バージョンのOfficeを利用している方も少なくないため、VBAコーディングには、アクティブなPCのバージョン情報を取得して、切り分けるためのひと手間を加えるひと手間が必要になることが予想されます。
➡【VBA】IE操作でボタンをクリックする2つの方法【VBA】IE操作でボタンをクリックする2つの方法
<楽天Web検索の自動クリックツール>
「楽天Web検索」を自動でクリックしてポイントを根こそぎ取得する機能を開発しました。これにより、何度も手動で検索しなくても自動で検索してくれるので、手軽にポイントをゲットできる仕組みとなっています。noteのページにて期間限定価格で100部ご紹介しております。ご興味のある方は下記ページより詳細をご確認下さい。^^