web-dev-qa-db-ja.com

シート保護:UserInterFaceOnlyがなくなりました

VBA Excelで、ファイルを閉じて再度開いた後にUserInterFaceOnly:=Trueオプションでシートを保護すると、UserInterFaceOnlyモードはアクティブにならず、パスワード保護のみがアクティブになります。

コード:ActiveSheet.Protect Password:="myPassword", UserInterfaceOnly:=True

どうして?

7
Pwi

ブックを再度開いた後、UserInterfaceOnly:=Trueを再適用せずにそれを行うことはできません。 ExcelのVbから取得 protect メソッドリファレンス:

UserInterfaceOnly引数をtrueに設定してこのメ​​ソッドを適用してからブックを保存すると、ブックを再度開いたときにワークシート全体(インターフェイスだけでなく)が完全に保護されます。ブックを開いた後にユーザーインターフェイス保護を再度有効にするには、UserInterfaceOnlyをtrueに設定してこのメ​​ソッドを再度適用する必要があります。

さて、これに時間がかかりすぎる(あなたが言うように15秒)ことが懸念される場合は、 this コードレビューの回答を見てください。さまざまなレベルの複雑さのいくつかのワークブックでこれを実行しましたが、2010を含め、試したすべてのバージョンで保護を再適用する時間はごくわずかです。

8
carlossierra

その問題の原因はわかりませんが、Workbook_Open()イベントに保護コードを追加し、すべてのシート保護をリセットしてそれぞれにUserInterfaceOnly:=Trueを含めることで、問題を回避できます。

1
RGA