2017年8月8日ブック読み取り専用の設定と解除を行えるコマンドボタンが標準であるVBAでExcelブックを扱う際に読み取り専用かどうかの確認を行いたいことがあります。その結果次第で読み取り専用の設定や解除を行うこともあります。これを行うには以下のVBAの関数を利用してもいいのですが、標準でとても便利な「読み取り専用の設定/解除」コマンドが用意されています。これを使うと、ブックの読み取り専用の設定と解除がブックを開いたままで行うことが出来ます。読み取り専用で開いていた場合に他のユーザーやExcelプロセスが更新してブックを閉じた場合、読み取り専用の設定/解除コマンドボタンを押すと更新内容が反映されて表示されます。通常利用する場合は「読み取り専用の設定/解除」コマンドボタンを使う方が便利だと思いますが、どうしてもVBAで処理しなければならない場合は以下で紹介しているマクロを利用してください。Subコード説明ブックの読み取り専用の確認には、WorkbookオブジェクトのReadOnlyプロパティを利用します。6行目のReadOnlyプロパティがTrueの場合は読み取り専用で、Falseの場合は読み取り専用ではありません。ReadOnlyプロパティは参照専用のプロパティです。読み取り専用に設定するにはChangeFileAccessメソッドに設定値xlReadOnlyを渡して利用します。直観的にはReadOnlyプロパティにTrueを設定すると読み取り専用になりそうですが、残念ながらできません。読み取り専用を設定する前にブックの内容が変わっている場合は、6行目のChangeFileAccess(xlReadOnly)実行時に編集を保存するか確認するダイアログが表示されます。すると表示されなくなりますが、編集状態を保存してしまいます。その上で読み取り専用に切り替わります。して回避するか、一度閉じてから開きなおすなどで対応する必要があります。‘_Workbook’オブジェクト)が発生します。エラーを回避したい場合は事前に読み取り専用の状態を確認しておくとよいでしょう。読み取り専用を解除する場合は、設定時と同じでChangeFileAccessメソッドに設定値xlReadWriteを渡して利用します。その際に、読み取り専用にしていた間に他のユーザーによる変更を反映させるために、ブックを再度読み込みなおします。変更が無くても読み込みなおされます。読み取り専用の状態のときにブックの内容が変わっている場合は、変更内容の扱いについて確認ダイアログが表示されます。Trueとして変更なしとみなすように事前に設定します。読み取り専用の設定時と同様で、既に読み取り専用が解除されている状態で再度解除を実行するとエラー1004が発生します。エラーを回避したい場合は事前に読み取り専用の状態を確認しておくとよいでしょう。Excel作業をVBAで効率化シェアお問合わせTOPへ。