[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAでブック保護の設定をしたいです』(mifuru)
VBA初心者です。
VBAでExcelのブック保護を設定したいのですが、上手くいきません・・。
下記のコードで実行してみた結果、
【1回目】ブック保護が"設定"されました。
【2回目】ブック保護が"解除"されました。
▼コード▼
ThisWorkbook.Protect Password:="1234"
なぜ2回目になると解除されてしまうのでしょうか・・。解除するメソッドは「Unprotect」のはずですよね・・?
VBAを実行した際は、必ずブック保護が設定された状態にしたいので困っています・・。
コードに不足があるのでしょうか?
他に考えられる原因はありますか?
調べてみても分からなかったので、ご教示いただけますと幸いです。
よろしくお願いします。
< 使用 Excel:Excel2019、使用 OS:Windows10 >
説明が分かりにくく申し訳ありません・・。
Excelの「校閲」タブにある「ブックの保護」を設定したいのです。
1回目(ブック保護されていない状態)の実行では、きちんと設定できるのですが、
2回目(ブック保護されている状態)では、ブック保護が解除されてしまいまして・・
念のためブックを保存しVBAを再実行してみましたが
やはり事象は改善されませんでした・・。
原因が分からず途方に暮れております・・。
以下すべてのコードです。
'ブック保護の設定 ThisWorkbook.Protect Password:="1111"
End Sub
(mifuru) 2021/02/14(日) 16:57
ヘルプによると、「Structureの規定値はFalse、Windowsを省略するとウィンドウは保護されません。」とあります。
つまり、保護する対象を明示しない場合は、保護されないような仕様になっていようです。
ThisWorkbook.Protect Password:="1234"は
ThisWorkbook.Protect Password:="1234",Structure:=False,Windows:=Falseを省略した書き方ということになり、
シート構成とウインドウの両方とも保護されなくて、正解なのではないでしょうか。
ブックが保護されていない状態で、ThisWorkbook.Protect Password:="1234"で保護がかかるのは
手作業でブックの保護をすると「シート構成」にデフォルトでチェックが付いているので、これに倣っているのだと思います。
引数を省略せず、
ThisWorkbook.Protect Password:="1234",Structure:=True,Windows:=True
とすれば、期待通りの結果になると思います。
(F-Rain) 2021/02/14(日) 17:17
ご教示いただきました通りに、きちんと引数を明示したところ
まさに希望通りの動作を実現することができました!
大変勉強になりました・・!
丁寧に解説いただきありがとうございます。
(mifuru) 2021/02/14(日) 18:07
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.