WorkbookBase.ProtectDocument メソッド
Visual Studio Tools for Office Runtime によって呼び出されます。これにより、キャッシュされたデータが保存された後でもブックにパスワード保護を再適用できるようになります。
名前空間: Microsoft.Office.Tools.Excel
アセンブリ: Microsoft.Office.Tools.Excel.v4.0.Utilities (Microsoft.Office.Tools.Excel.v4.0.Utilities.dll 内)
構文
'宣言
Protected Overridable Sub ProtectDocument
protected virtual void ProtectDocument()
解説
パスワードで保護されたブック内のキャッシュされたデータが実行時に変更される可能性がある場合、Excel のドキュメント レベルのプロジェクトでこのメソッドをオーバーライドします。このメソッドの実装では、Protect メソッドを使用してブックを保護します。
既定では、パスワードで保護されたブック内のキャッシュされたデータへの変更は、ブックが保存されるときには保持されません。キャッシュされたデータへの変更を保存するには、プロジェクトで次のメソッドをオーバーライドします。
UnprotectDocument.ブックが保存されると、Visual Studio Tools for Office Runtime はこのメソッドを呼び出します。このメソッドに、ブックの保護を一時的に解除するコードを追加します。これにより、キャッシュされたデータへの変更を保存できるようになります。
ProtectDocument.ブックを保存した後、Visual Studio Tools for Office Runtime はこのメソッドを呼び出します。このメソッドに、ブックの保護を再適用するコードを追加します。
詳細については、「方法 : パスワードで保護されたドキュメント内のデータをキャッシュする」を参照してください。
パスワード保護とは関係のない何かのエラーが原因で、キャッシュされたデータを保存できなかった場合でも、Visual Studio Tools for Office Runtime は ProtectDocument メソッドを呼び出します。たとえば、ICachedType インターフェイスを実装して、キャッシュされたデータをドキュメントに保存する方法をカスタマイズしている場合、使用している ICachedType 実装が例外をスローし、キャッシュされたデータの保存が阻止されたときでも、ProtectDocument メソッドは呼び出されます。
例
次のコード例では、ProtectDocument メソッドをオーバーライドして、UnprotectDocument メソッドのオーバーライドにより削除された保護を再適用する方法を示します。このコードを使用する場合は、Excel のドキュメント レベルのプロジェクトの ThisWorkbook クラスから実行してください。このコードでは、パスワードは securelyStoredPassword という名前のフィールドに格納されていることを前提としています。
<CachedAttribute()> _
Public CachedString As String = "This string is cached in the workbook."
Private protectStructureValue As Boolean
Private protectWindowsValue As Boolean
Protected Overrides Sub UnprotectDocument()
protectStructureValue = Me.ProtectStructure
protectWindowsValue = Me.ProtectWindows
Me.Unprotect(securelyStoredPassword)
End Sub
Protected Overrides Sub ProtectDocument()
Me.Protect(securelyStoredPassword, protectStructureValue, _
protectWindowsValue)
End Sub
[CachedAttribute]
public string CachedString = "This string is cached in the workbook.";
private bool protectStructureValue;
private bool protectWindowsValue;
protected override void UnprotectDocument()
{
protectStructureValue = this.ProtectStructure;
protectWindowsValue = this.ProtectWindows;
this.Unprotect(securelyStoredPassword);
}
protected override void ProtectDocument()
{
this.Protect(securelyStoredPassword, protectStructureValue,
protectWindowsValue);
}
.NET Framework セキュリティ
- 直前の呼び出し元に対する完全な信頼。このメンバーは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。
参照
関連項目
Microsoft.Office.Tools.Excel 名前空間