VBAでOffice2016から新たに追加されたAutoSaveOnメソッド。しかし、未だ2013以前のPCを利用されている方も少なくありません。
そのため、Office2016やOffice365を利用されている方は、自動保存機能がデフォルトでONの状態になっているため、イベントごとで勝手に保存がかかります。
便利で快適に感じる方が多いかもしれませんが、VBAでそのファイル自体に保存をしたくない場合には、この自動保存機能がデメリットになることがあります。
そこで、本章では、VBA処理時のAutoSaveOnイベントでエラー表示される「メソッドをサポートしていません。」の回避処理について解説していきます。
自動保存をかけたくない場合はどんな時?
自動保存をかけたくない場合とは、どんな時にあるのでしょうか?実は、下記のような場合に遭遇しました。
<自動保存をかけたくない場合とは>
- VBAで一部データを削除し別ファイルにデータ保存するが、元ファイルを保存したくない場合
Office365などでは、自動保存がデフォルトでONの御状態です。
ファイルを閉じる前にも自動保存がかかってしまうため、「VBAでソートかけて、VBAで一部データを削除し別ファイルにデータ保存するが、元ファイルを保存したくない。」場合でも、保存されて、ファイルがクローズされてしまいます。
このように、Office365やShare Point上で、データをダウンロードをする際には、ファイルが自動保存され、一部のデータが消えてしまうということありました。
Office2013以前のバージョンで「AutoSaveOnメソッド」を実行した時のエラーメッセージ
Office2013以前のバージョンで「AutoSaveOnメソッド」を実行しても下記のようなエラーメッセージが表示されます。
その前に、自動保存を解除するための使い方の詳細は下記で確認しておきましょう。
➡【VBA】自動保存を解除する!AutoSaveOnとEnableAutoRecoverの使い方https://tarmiyan.net/vba-autosave-del
<Office2013以前のバージョンで「AutoSaveOnメソッド」を実行した時のエラーメッセージ>
- 「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」
こんなメッセージが表示されます。
Office2013以前のユーザーやOffice2016以降を利用されるユーザーが存在した場合、Office2013以前のバージョンを利用しているユーザーのみ、このメッセージが表示され、VBAの実行処理は、上記メッセージが上がり、処理が中断されてしまいます。
この問題を回避するためには、制御ロジックを組み込む必要があります。
Officeのバージョンが異なるユーザーに「AutoSaveOn」メソッドを切り分ける考え方
AutoSaveOnメソッドは、Office2016以降のバージョンの利用者にしか適用することができません。そのため、効果的な対処法には下記の方法が有効です。
【Officeのバージョンが異なる利用者に「AutoSaveOn」メソッドを切り分ける考え方】
- Officeのバージョン情報を取得する
AutoSaveOnメソッドを利用する際には、Office2016以降の利用者であるかどうかを判別するための「バージョン情報」を取得する処理を加えてあげれば、AutoSaveOnメソッドを通さずに、自動保存をかけることなく、処理を流すことが可能です。
AutoSaveOnメソッドのエラー回避処理
VBAによるAutoSaveOnメソッドのエラー回避処理は、下記のように記述するとよいでしょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Public Function AutoSaveOff365() as Boolean Dim Excelver As String On Error GoTo ERROR_ Excelver = Application.Version If Excelver>= 16 then ActiveWorkbook.AutosaveOn = False End If Exit Function ERROR_: Exit Function Msgbox Err.Number & ":" & Err.Description End Function |
【解説】
こちらの記述は、マクロが実行された各PCのOfficeのバージョン情報を取得するロジックです。このロジックで、AutoSaveOnのメソッドが利用可能なのかどうか、すみわけを行うことができます。
またOffice2013以前のバージョンでは、自動保存がデフォルトでオフになっているため、こうした問題は起こっていませんでしたが、Office365とSharePointを利用される場合に、こうした問題が発生することが確認されました。
まとめ
このように、自動保存は非常に便利でありがたい機能ですが、マクロの機能を利用されている方は、利用の仕方によっては、誤ってデータを消してしまうことにもつながりますので、バックアップ対応とソースの記述に一部注意が必要になることを覚えておきましょう。