Cómo: Almacenar datos en caché en un documento protegido por contraseña
Si se agregan datos a la memoria caché en un documento o libro protegidos con contraseña, los cambios que se hagan en esos datos no se guardarán automáticamente.Dichos cambios podrán guardarse si se reemplazan dos métodos en el proyecto.
Se aplica a: La información de este tema se aplica a los proyectos de nivel de documento para las siguientes aplicaciones: Excel 2013 y Excel 2010; Word 2013 y Word 2010. Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto de Office.
Almacenar en memoria caché en documentos de Word
Para almacenar en memoria caché los datos de un documento de Word protegido con contraseña
En la clase ThisDocument, marque un campo o una propiedad pública que se va a almacenar en la memoria caché.Para obtener más información, vea Almacenar datos en caché.
Invalide el método DocumentBase.UnprotectDocument de la clase ThisDocument y quite la protección del documento.
Cuando se guarda el documento, el Runtime de Microsoft Visual Studio Tools para Office llama a este método para que el usuario tenga la oportunidad de desproteger el documento.Esto permite guardar los cambios efectuados en los datos almacenados en la memoria caché.
Reemplace el método DocumentBase.ProtectDocument de la clase ThisDocument y vuelva a proteger el documento.
Una vez guardado el documento, el Runtime de Microsoft Visual Studio Tools para Office llama a este método para que el usuario tenga la oportunidad de proteger de nuevo el documento.
Ejemplo
En el ejemplo de código siguiente se muestra cómo almacenar en memoria caché los datos de un documento de Word protegido con contraseña.Antes de que el código quite la protección en el método DocumentBase.UnprotectDocument, guarda el valor ProtectionType actual para que se pueda volver a aplicar el mismo tipo de protección en el método DocumentBase.ProtectDocument.
<CachedAttribute()> _
Public CachedString As String = "This string is cached in the document."
Private protectionTypeValue As Word.WdProtectionType
Protected Overrides Sub UnprotectDocument()
If Me.ProtectionType <> Word.WdProtectionType.wdNoProtection Then
protectionTypeValue = Me.ProtectionType
Me.Unprotect(securelyStoredPassword)
End If
End Sub
Protected Overrides Sub ProtectDocument()
Me.Protect(protectionTypeValue, password:=securelyStoredPassword)
End Sub
[CachedAttribute]
public string CachedString = "This string is cached in the document.";
private Word.WdProtectionType protectionTypeValue;
protected override void UnprotectDocument()
{
if (this.ProtectionType != Word.WdProtectionType.wdNoProtection)
{
protectionTypeValue = this.ProtectionType;
this.Unprotect(ref securelyStoredPassword);
}
}
protected override void ProtectDocument()
{
this.Protect(protectionTypeValue, ref missing,
ref securelyStoredPassword, ref missing, ref missing);
}
Compilar el código
Agregue este código a la clase ThisDocument del proyecto.Este código da por supuesto que la contraseña está almacenada en un campo denominado securelyStoredPassword.
Almacenar en memoria caché en libros de Excel
En los proyectos Excel, este procedimiento solo es necesario cuando se protege el libro completo con contraseña utilizando el método Workbook.Protect.Este procedimiento no es necesario si protege una hoja de cálculo concreta con contraseña utilizando el método Worksheet.Protect.
Para almacenar en memoria caché los datos de un libro de Excel protegido con contraseña
En la clase ThisWorkbook o en una de las clases Sheetn, marque el campo o la propiedad pública que se va a almacenar en memoria caché.Para obtener más información, vea Almacenar datos en caché.
Invalide el método WorkbookBase.UnprotectDocument de la clase ThisWorkbook y quite la protección del libro.
Cuando se guarda el libro, el Runtime de Microsoft Visual Studio Tools para Office llama a este método para que el usuario tenga la oportunidad de desproteger el libro.Esto permite guardar los cambios efectuados en los datos almacenados en la memoria caché.
Reemplace el método WorkbookBase.ProtectDocument de la clase ThisWorkbook y vuelva a proteger el documento.
Una vez guardado el libro, el Runtime de Microsoft Visual Studio Tools para Office llama a este método para que el usuario tenga la oportunidad de proteger de nuevo el libro.
Ejemplo
En el ejemplo de código siguiente se muestra cómo almacenar en memoria caché los datos de un libro de Excel protegido con contraseña.Antes de que el código quite la protección en el método WorkbookBase.UnprotectDocument, guarda los valores ProtectStructure y ProtectWindows actuales para que se pueda volver a aplicar el mismo tipo de protección en el método WorkbookBase.ProtectDocument.
<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);
}
Compilar el código
Agregue este código a la clase ThisWorkbook del proyecto.Este código da por supuesto que la contraseña está almacenada en un campo denominado securelyStoredPassword.
Vea también
Tareas
Cómo: Almacenar datos en la memoria caché para el uso sin conexión o en un servidor
Cómo: Almacenar en memoria caché un origen de datos de un documento de Office mediante programación