0

workbook_open()一般ユーザーがどのワークシートでも変更できないように、最初にワークブックの保護を解除し、すべてのマクロを実行してから、ワークブックを再度保護する方法はありますか? 一般ユーザーが何も変更できないようにしたいのですが、マクロが自動更新と計算を実行できるようにします。

助言がありますか?これは実現可能ですか?

4

2 に答える 2

2

あなたが探しているのはWorksheet.Protect方法だと思います。

イベントの開始時に、次のWorkbook_Openコードを配置します。

ThisWorkbook.Sheets("SheetYouWantToUnprotect").Unprotect _   Password:="TheSheetPassword"

次に、Workbook_Openイベント コードの最後にシートを再度保護する必要があるため、次のコードを配置します。

ThisWorkbook.Sheets("SheetYouWantToProtect").Protect _  
Password:="SheetPassword"

もちろん、複数のシートの保護を解除する必要がある場合は、複数のシートでこれを行うことができます。各シートに同じパスワードが設定されている場合は、Openイベント の最初に単純なループを配置します。

Dim sht as Worksheet  

For Each sht in Thisworkbook.Sheets  
    sht.Unprotect Password:="YourPassword"  
Next sht 

コードの最後で、同じループを使用してシートを保護できます。変更.Unprotectするだけ.Protectです。

または、多くの異なるパスワードがある場合 (すべてを 1 つのパスワードに変更することをお勧めします)、必要なシートの保護を解除するのに必要な数のコードの最初の行のインスタンスを配置できます。

注:このメソッドには、ここでは取り上げなかったオプションの引数が他にも多数ありますが、完全なリストはこちらで確認できます。.Protect

編集: メソッド詳細は次のとおりです。Unprotect

于 2013-11-04T05:06:59.953 に答える
1

はい、できます

Private Sub Workbook_Open()
Dim WS As Worksheet

For Each WS In ThisWorkbook.Sheets
    WS.Unprotect Password:="YourPassword"
    WS.Protect Password:="YourPassword", UserInterfaceOnly:=True
Next WS
End Sub

これUserInterfaceOnly:=Trueにより、VBA はワークシートの任意の部分を操作できますが、一般ユーザーは「ロックされていない」セルのみを操作できます。

于 2013-11-04T11:53:05.813 に答える