0

VBScript を使用して、同じブックの異なるシートで多くの計算を行っています。ここで懸念されるのは、何らかの理由で誰かがシートのいずれかを削除した場合、スクリプトによって大量のデータが失われることです。ユーザーから保護する方法はありますか?

4

2 に答える 2

1

(この回答の最後にある編集を必ず読んでください)

データベースのようなシートを使用して作成した同様のワークブックがあるため、情報保護に関する懸念を理解しています。ワークブックを保護している場合、マクロはシート/ブックに特定の変更を実行できなくなります。ただし、シートの内容のみを保護する場合は、設定 UserInterfaceOnly を使用できます。これにより、シートをユーザーから保護しながら、マクロを自由に実行できます。シートを開いたときにシートが保護されているかどうかを検出し、保護されていない場合は保護することができます。

Sub test()

dim mySheet as worksheet
dim myPass as string

myPass = "password"
set mySheet = Excel.ActiveSheet
if mySheet.ProtectContents = False then
   mySheet.Protect Password:=myPass, UserInterfaceOnly:=True
end if

'Enter your code here

mySheet.Unprotect Password:=myPass

End Sub

さらに、警告後にユーザーがシートの保護を解除できるようにしたい場合は、カスタム UI エディターを使用して、レビュー タブからシートの保護/保護解除グループを削除し、カスタマイズされたボタンに置​​き換えることができます。私は過去にこれを行ったことがあり、後でシートを維持するのに実際に大いに役立ちました。以下に、カスタム UI エディターに関するいくつかのリンクを含めました。

編集:

一見したところ、この質問は VBA に関するものだと思いました (私の悪い点です)。上記のコードは引き続き適用できると思います。コードをタグ内に配置し、ワークブックとワークシートの変数を適切に設定するだけです (上記で設定した方法ではありません)。ワークブック/ワークシート オブジェクトを設定/参照する方法がまだわからない場合は、このフォーラムの投稿でその方法を説明しています。私は通常VBscriptを使用していませんが、フォーラムは正しいようです。幸運を!

于 2012-12-31T22:00:56.583 に答える