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 2007 y Excel 2010; Word 2007 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

  1. 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é.

  2. Invalide el método DocumentBase.UnprotectDocument de la clase ThisDocument y quite la protección del documento.

    Cuando se guarda el documento, el Motor en tiempo de ejecución 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é.

  3. Reemplace el método DocumentBase.ProtectDocument de la clase ThisDocument y vuelva a proteger el documento.

    Una vez guardado el documento, el Motor en tiempo de ejecución 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

  1. 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é.

  2. Invalide el método WorkbookBase.UnprotectDocument de la clase ThisWorkbook y quite la protección del libro.

    Cuando se guarda el libro, el Motor en tiempo de ejecución 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é.

  3. Reemplace el método WorkbookBase.ProtectDocument de la clase ThisWorkbook y vuelva a proteger el documento.

    Una vez guardado el libro, el Motor en tiempo de ejecución 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

Conceptos

Almacenar datos en caché