VBA Excelで、ファイルを閉じて再度開いた後にUserInterFaceOnly:=True
オプションでシートを保護すると、UserInterFaceOnly
モードはアクティブにならず、パスワード保護のみがアクティブになります。
コード:ActiveSheet.Protect Password:="myPassword", UserInterfaceOnly:=True
どうして?
ブックを再度開いた後、UserInterfaceOnly:=True
を再適用せずにそれを行うことはできません。 ExcelのVbから取得 protect メソッドリファレンス:
UserInterfaceOnly引数をtrueに設定してこのメソッドを適用してからブックを保存すると、ブックを再度開いたときにワークシート全体(インターフェイスだけでなく)が完全に保護されます。ブックを開いた後にユーザーインターフェイス保護を再度有効にするには、UserInterfaceOnlyをtrueに設定してこのメソッドを再度適用する必要があります。
さて、これに時間がかかりすぎる(あなたが言うように15秒)ことが懸念される場合は、 this コードレビューの回答を見てください。さまざまなレベルの複雑さのいくつかのワークブックでこれを実行しましたが、2010を含め、試したすべてのバージョンで保護を再適用する時間はごくわずかです。
その問題の原因はわかりませんが、Workbook_Open()
イベントに保護コードを追加し、すべてのシート保護をリセットしてそれぞれにUserInterfaceOnly:=True
を含めることで、問題を回避できます。