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
Versión de Microsoft Office
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
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 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é.
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
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 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é.
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
Historial de cambios
Fecha |
Historial |
Motivo |
---|---|---|
Julio de 2008 |
Tema nuevo. |
Cambio de características de SP1. |