Compartir a través de


Cómo: Almacenar datos en caché en un documento protegido por contraseña

Actualización: Julio de 2008

Se aplica a

La información de este tema sólo se aplica a los proyectos de Visual Studio Tools para Office y versiones de Microsoft Office especificados.

Tipo de proyecto

  • Proyectos de nivel de documento

Versión de Microsoft Office

  • Microsoft Office System 2007

Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto.

En proyectos en el nivel del documento para Word 2007 y Excel 2007, si se agregan datos a la memoria caché en un documento o libro que se protege con contraseña, los cambios que se hagan en esos datos no se guardan.

A partir de Visual Studio 2008 Service Pack 1 (SP1), puede guardar los cambios efectuados en los datos almacenados en la memoria caché invalidando dos métodos del proyecto.

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 Document.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 Visual Studio Tools para Office llama a este método para darle la oportunidad de desproteger el documento. Esto permite guardar los cambios efectuados en los datos almacenados en la memoria caché.

  3. Invalide el método Document.ProtectDocument de la clase ThisDocument y vuelva a aplicar la protección al documento.

    Una vez guardado el documento, el motor en tiempo de ejecución de Visual Studio Tools para Office llama a este método para darle la oportunidad de volver a aplicar la protección al documento.

Código de

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 Document.UnprotectDocument, guarda el valor ProtectionType actual para que se pueda volver a aplicar el mismo tipo de protección en el método Document.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 Workbook.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 Visual Studio Tools para Office llama a este método para darle la oportunidad de desproteger el libro. Esto permite guardar los cambios efectuados en los datos almacenados en la memoria caché. 

  3. Invalide el método Workbook.ProtectDocument de la clase ThisWorkbook y vuelva a aplicar la protección al documento.

    Una vez guardado el libro, el motor en tiempo de ejecución de Visual Studio Tools para Office llama a este método para darle la oportunidad de volver a aplicar la protección al libro.

Código de

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

Historial de cambios

Fecha

Historial

Motivo

Julio de 2008

Tema nuevo.

Cambio de características de SP1.