アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBA初心者です。
VBAでExcelのブック保護を設定したいのですが、上手くいきません・・。

下記のコードで実行してみた結果、
【1回目】ブック保護が"設定"されました。
【2回目】ブック保護が"解除"されました。


▼コード▼
ThisWorkbook.Protect Password:="1234"


なぜ2回目になると解除されてしまうのでしょうか・・。解除するメソッドは「Unprotect」のはずですよね・・?
VBAを実行した際は、必ずブック保護が設定された状態にしたいので困っています・・。

コードに不足があるのでしょうか?
他に考えられる原因はありますか?
調べてみても分からなかったので、ご教示いただけますと幸いです。
よろしくお願いします。

A 回答 (1件)

こんにちは、


バージョンを知りたいところですが、Excel2016は同様ですね。
詳しく調べていませんが、なんか、仕様変更?知りませんでした。

何か良い方法があるかも知れませんが、その場しのぎかも知れませんが、保護されているかを調べ保護されていれば、実行しないみたいにすると思います。
https://support.microsoft.com/ja-jp/office/%E3%8 …
を見るとProtectWindowsが使えそうもないので エラートラップで取敢えず代用してこんな感じ。

On Error GoTo OkProtect
With ActiveWorkbook
  .Sheets(1).Name = .Sheets(1).Name
  .Protect Password:="1234"
End With
OkProtect:

保護がかかって要ればエラーが返り指定ラベル迄処理が飛びます。
シート名変更を許していれば(Excel2010以前?)エラーにならないですが。。
    • good
    • 1
この回答へのお礼

助かりました

ご回答ありがとうございます。
ご提示いただきましたコードで、無事に希望通りの動作を実現させることができました・・!
大変勉強になりました!ありがとうございます!

お礼日時:2021/02/14 17:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!