Como: dados do Cache em um documento protegido por senha

Se você adicionar dados à cache de dados em um documento ou em uma pasta de trabalho que é protegida com uma senha, as alterações aos dados armazenados em cache não são salvas automaticamente.Você pode salvar alterações dos dados armazenados em cache substituindo dois métodos em 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 2013 e Excel 2010; Word 2013 e Word 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Cache em documentos do word

Para armazenar em cache os dados em uma palavra documento que são protegidas com uma senha

  1. Em a classe de ThisDocument , marcar um campo ou propriedade pública a serem armazenados em cache.Para obter mais informações, consulte Cache de dados.

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

    Quando o documento é salvo, Visual Studio Tools for Office Runtime chama esse método para fornecer uma oportunidade ao unprotect o documento.Isso permite que as alterações aos dados armazenados em cache a ser salvos.

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

    Após o documento é salvo, Visual Studio Tools for Office Runtime chama esse método para fornecer uma oportunidade para reaplicar proteção para o documento.

Cc668203.collapse_all(pt-br,VS.110).gifExemplo

O exemplo de código a seguir demonstra como armazenar em cache os dados em um documento do word que é protegido por senha.Antes de remover o código no método da proteção DocumentBase.UnprotectDocument , salvará o valor atual de ProtectionType , para que o mesmo tipo de proteção pode ser reaplicado no método de 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);
}

Cc668203.collapse_all(pt-br,VS.110).gifCompilando o código

Adicione este código para a classe de ThisDocument em seu projeto.Este código presume que a senha seja armazenada em um campo denominado securelyStoredPassword.

Cache nas pastas de trabalho do Excel

Em projetos do excel, este procedimento é necessário somente quando você proteja a pasta de trabalho inteiro com uma senha usando o método de Workbook.Protect .Esse procedimento não é necessário se você só assegure uma planilha específica com uma senha usando o método de Worksheet.Protect .

Para armazenar em cache os dados em uma pasta de trabalho do Excel que é protegida com uma senha

  1. Em a classe de ThisWorkbook ou na as classes de Sheetem , marcar um campo ou propriedade pública a serem armazenados em cache.Para obter mais informações, consulte Cache de dados.

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

    Quando a pasta de trabalho é salva, Visual Studio Tools for Office Runtime chama esse método para fornecer uma oportunidade ao unprotect a pasta de trabalho.Isso permite que as alterações aos dados armazenados em cache a ser salvos.

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

    Após a pasta de trabalho é salva, Visual Studio Tools for Office Runtime chama esse método para fornecer uma oportunidade para reaplicar proteção para a pasta de trabalho.

Cc668203.collapse_all(pt-br,VS.110).gifExemplo

O exemplo de código a seguir demonstra como armazenar em cache os dados em uma pasta de trabalho do Excel que é protegida com uma senha.Antes de remover o código no método da proteção WorkbookBase.UnprotectDocument , salva ProtectStructure e os valores atuais de ProtectWindows , para que o mesmo tipo de proteção pode ser reaplicado no método de 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);
}

Cc668203.collapse_all(pt-br,VS.110).gifCompilando o código

Adicione este código para a classe de ThisWorkbook em seu projeto.Este código presume que a senha seja armazenada em um campo denominado securelyStoredPassword.

Consulte também

Tarefas

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

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

Conceitos

Cache de dados