Como: Cache de dados em um documento protegido por senha

Se você adicionar dados para o cache de dados em um documento ou pasta de trabalho que está protegida com uma senha, que as alterações dos dados em cache não são salvas automaticamente. Você pode salvar as alterações aos dados em cache, substituindo os dois métodos no seu projeto.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento para os seguintes aplicativos: Excel 2007 e Excel 2010; Word 2007 e Word 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Cache de documentos do Word

Dados em cache em um documento do Word é protegido com uma senha.

  1. No ThisDocument da classe, marcar um campo público ou a propriedade seja armazenada em cache. For more information, see Cache de dados.

  2. Substituir o DocumentBase.UnprotectDocument método de ThisDocument classe e remover a proteção do documento.

    Quando o documento é salvo, o Visual Studio Tools for Office runtime chama este método para lhe dar uma oportunidade para desproteger o documento. Isso permite que as alterações dos dados em cache a ser salvo.

  3. Substituir o DocumentBase.ProtectDocument método na ThisDocument classe e reaplicar a proteção para o documento.

    Depois que o documento é salvo, o Visual Studio Tools for Office runtime chama este método para lhe dar uma oportunidade para reaplicar a proteção para o documento.

Example

O exemplo de código a seguir demonstra como armazenar em cache os dados em um documento do Word é protegido por senha. Antes do código remove a proteção contra a DocumentBase.UnprotectDocument método, ele salva o atual ProtectionType valor, para que o mesmo tipo de proteção pode ser reaplicado na DocumentBase.ProtectDocument método.

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

Compiling the Code

Adicione este código para o ThisDocument classe no projeto. Esse código pressupõe que a senha é armazenada em um campo chamado securelyStoredPassword.

Cache de pastas de trabalho do Excel

Em projetos do Excel, este procedimento é necessário apenas quando você proteger a pasta de trabalho inteira com uma senha usando o Workbook.Protect método. Esse procedimento não é necessário se você proteger apenas uma planilha específica com uma senha usando o Worksheet.Protect método.

Dados em cache em uma pasta de trabalho do Excel é protegida por senha

  1. No ThisWorkbook classe ou uma da Sheetn classes, marcar um campo público ou a propriedade seja armazenada em cache. For more information, see Cache de dados.

  2. Substituir o WorkbookBase.UnprotectDocument método de ThisWorkbook classe e remover a proteção da pasta de trabalho.

    Quando a pasta de trabalho é salvo, o Visual Studio Tools for Office runtime chama este método para lhe dar uma oportunidade para desproteger a pasta de trabalho. Isso permite que as alterações dos dados em cache a ser salvo.

  3. Substituir o WorkbookBase.ProtectDocument método na ThisWorkbook classe e reaplicar a proteção para o documento.

    Depois que a pasta de trabalho é salvo, o Visual Studio Tools for Office runtime chama este método para lhe dar uma oportunidade para reaplicar a proteção para a pasta de trabalho.

Example

O exemplo de código a seguir demonstra como armazenar em cache os dados em uma pasta de trabalho do Excel é protegido por senha. Antes do código remove a proteção contra a WorkbookBase.UnprotectDocument método, ele salva o atual ProtectStructure e ProtectWindows valores, para que o mesmo tipo de proteção pode ser reaplicado na WorkbookBase.ProtectDocument método.

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

Compiling the Code

Adicione este código para o ThisWorkbook classe no projeto. Esse código pressupõe que a senha é armazenada em um campo chamado securelyStoredPassword.

Consulte também

Tarefas

Como: Cache de dados para uso off-line ou em um servidor

Como: Cache programaticamente uma fonte de dados em um documento do Office

Conceitos

Cache de dados