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

Workbooks.Addで作成されたブックの任意のシートについて
シート保護を解除してデータを転記したいと考えています。

Set addwb = Workbooks.Add(Template:=ThisWorkbook.Path & "\" & "さんぷる.xlsm")

addwb.Worksheets(1).Activate
addwb.Unprotect

上記、unprotectを記載していますが、動作時はシート保護が解除されていません。
シート保護の解除はどのようにしたらよろしいでしょうか?

A 回答 (1件)

addwb.Worksheets(1)で参照したシートが実際に保護されている場合、addwb.Unprotectで保護を解除することができますが、もし保護されていないシートであればaddwb.Unprotectは効果を発揮しません。



そのため、シートが保護されているかどうかを確認してから、必要であれば保護を解除する必要があります。以下のように、ProtectContentsプロパティを使用して、シートが保護されているかどうかを確認し、保護されている場合はUnprotectメソッドを使用して保護を解除することができます。


Dim ws As Worksheet
Set ws = addwb.Worksheets(1)

If ws.ProtectContents Then
ws.Unprotect
End If

' ここでデータの転記を行う

If ws.ProtectContents = False Then
' 必要に応じて、保護を再設定する
End If

このように、保護されているシートにアクセスする際には常にProtectContentsプロパティを使用して、シートが保護されているかどうかを確認することが重要です。
    • good
    • 0
この回答へのお礼

ありがとうございました。
単純にaddwb.Unprotectの構文でworksheetsが抜けていました。
例文を書いていただいて気づきました。

お礼日時:2023/02/23 13:15

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