Cómo: almacenar en caché datos en un documento protegido por contraseñaHow to: Cache data in a password-protected document

Si agrega datos a la caché de datos en un documento o libro que está protegido con una contraseña, no se guardan los cambios realizados en los datos en caché automáticamente.If you add data to the data cache in a document or workbook that is protected with a password, changes to the cached data are not saved automatically. Puede guardar los cambios a los datos almacenados en caché mediante el reemplazo de dos métodos en el proyecto.You can save changes to the cached data by overriding two methods in your project.

Aplicación: la información de este tema se aplica a los proyectos de nivel de documento de Excel y Word.Applies to: The information in this topic applies to document-level projects for Excel and Word. Para obtener más información, consulte características disponibles por tipo de aplicación y el proyecto de Office.For more information, see Features available by Office application and project type.

Almacenamiento en caché en documentos de WordCaching in Word documents

Para almacenar datos en un documento de Word que está protegido con una contraseñaTo cache data in a Word document that is protected with a password

  1. En el ThisDocument class, marcar un campo público o una propiedad en la memoria caché.In the ThisDocument class, mark a public field or property to be cached. Para obtener más información, consulte almacenar en caché datos.For more information, see Cache data.

  2. Invalidar el UnprotectDocument método en el ThisDocument clase y quitar la protección del documento.Override the UnprotectDocument method in the ThisDocument class and remove protection from the document.

    Cuando se guarda el documento, el Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime llama a este método para darle una oportunidad para desproteger el documento.When the document is saved, the Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime calls this method to give you an opportunity to unprotect the document. Esto permite realizar cambios en los datos en caché se guarden.This enables changes to the cached data to be saved.

  3. Invalidar el ProtectDocument método en el ThisDocument clase y volver a aplicar la protección al documento.Override the ProtectDocument method in the ThisDocument class and reapply protection to the document.

    Después de guardar el documento, el Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime llama a este método para darle la oportunidad de volver a aplicar la protección al documento.After the document is saved, the Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime calls this method to give you an opportunity to reapply protection to the document.

EjemploExample

El ejemplo de código siguiente muestra cómo almacenar en caché datos en un documento de Word que está protegido con una contraseña.The following code example demonstrates how to cache data in a Word document that is protected with a password. Antes de que el código quita la protección en el UnprotectDocument método, guarda actual ProtectionType valor, por lo que se pueda aplicar el mismo tipo de protección en el ProtectDocument método.Before the code removes the protection in the UnprotectDocument method, it saves the current ProtectionType value, so that the same type of protection can be reapplied in the ProtectDocument method.

[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);
}
<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

Compile el códigoCompile the code

Agregue este código a la ThisDocument clase del proyecto.Add this code to the ThisDocument class in your project. Este código supone que la contraseña se almacena en un campo denominado securelyStoredPassword.This code assumes that the password is stored in a field named securelyStoredPassword.

Almacenar en caché en los libros de ExcelCache in Excel workbooks

En los proyectos de Excel, este procedimiento sólo es necesario cuando proteger el libro completo con una contraseña mediante la Protect método.In Excel projects, this procedure is necessary only when you protect the entire workbook with a password by using the Protect method. Este procedimiento no es necesario si protege solo una hoja de cálculo específico con una contraseña mediante el uso de la Protect método.This procedure is not necessary if you protect only a specific worksheet with a password by using the Protect method.

Para almacenar datos en un libro de Excel que está protegido con una contraseñaTo cache data in an Excel workbook that is protected with a password

  1. En el ThisWorkbook clase o una de las Sheet n clases, marcar un campo público o una propiedad en la memoria caché.In the ThisWorkbook class or one of the Sheetn classes, mark a public field or property to be cached. Para obtener más información, consulte almacenar en caché datos.For more information, see Cache data.

  2. Invalidar el UnprotectDocument método en el ThisWorkbook clase y quitar la protección del libro.Override the UnprotectDocument method in the ThisWorkbook class and remove protection from the workbook.

    Cuando se guarda el libro, el Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime llama a este método para darle una oportunidad para desproteger el libro.When the workbook is saved, the Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime calls this method to give you an opportunity to unprotect the workbook. Esto permite realizar cambios en los datos en caché se guarden.This enables changes to the cached data to be saved.

  3. Invalidar el ProtectDocument método en el ThisWorkbook clase y volver a aplicar la protección al documento.Override the ProtectDocument method in the ThisWorkbook class and reapply protection to the document.

    Una vez guardado el libro, el Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime llama a este método para darle la oportunidad de volver a aplicar la protección en el libro.After the workbook is saved, the Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime calls this method to give you an opportunity to reapply protection to the workbook.

EjemploExample

El ejemplo de código siguiente muestra cómo almacenar en caché datos en un libro de Excel que está protegido con una contraseña.The following code example demonstrates how to cache data in an Excel workbook that is protected with a password. Antes de que el código quita la protección en el UnprotectDocument método, guarda actual ProtectStructure y ProtectWindows valores, para que se puede aplicar el mismo tipo de protección en el ProtectDocument método.Before the code removes the protection in the UnprotectDocument method, it saves the current ProtectStructure and ProtectWindows values, so that the same type of protection can be reapplied in the ProtectDocument method.

<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);
}

Compile el códigoCompile the code

Agregue este código a la ThisWorkbook clase del proyecto.Add this code to the ThisWorkbook class in your project. Este código supone que la contraseña se almacena en un campo denominado securelyStoredPassword.This code assumes that the password is stored in a field named securelyStoredPassword.

Vea tambiénSee also

Almacenar datos en caché Cache data
Cómo: almacenar en caché datos para su uso sin conexión o en un servidor How to: Cache data for use offline or on a server
Cómo: almacenar en caché mediante programación un origen de datos en un documento de OfficeHow to: Programmatically cache a data source in an Office document