Como: Dados de cache em um documento protegida por senha

Se aplica a

As informações contidas neste tópico se aplicam apenas às especificado Ferramentas do Visual Studio para o Office projetos e as versões do Microsoft Office.

Tipo de Projeto

  • Projetos de nível de documento

Versão do Microsoft Office

  • Microsoft Office Sistema de 2007

For more information, see Recursos disponíveis pelo aplicativo e o tipo de projeto.

Em projetos de nível de documento para Word 2007 e Excel 2007, se você adicionar dados ao cache de dados em um documento ou pasta de trabalho que está protegida com uma senha, alterações nos dados armazenados em cache não serão salvas.

Iniciando no Visual Studio 2008 Serviço Pack 1 (SP1), você pode salvar as alterações aos dados armazenados em cache, substituindo os dois métodos no projeto.

Cache em documentos do Word

A dados de cache em um documento do Word que está protegido com a senha

  1. Na classe ThisDocument, marcar um campo público ou a propriedade a ser armazenado em cache.For more information, see Cache de dados.

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

    Quando o documento é salvo, o Tempo de execução Ferramentas do Visual Studio para o Office chama esse método para dar uma oportunidade para desproteger o documento.Isso permite que alterações nos dados armazenados em cache a ser salvo.

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

    Depois que o documento é salvo, o Tempo de execução Ferramentas do Visual Studio para o Office chama esse método lhe oferece a oportunidade de reaplicar proteção para o documento.

Exemplo

O exemplo de código a seguir demonstra como armazenar em cache dados em um documento do Word que está protegido com a senha.Antes do código remove a proteção no método Document.UnprotectDocument , ele salva o valor atual do ProtectionType , para que o mesmo tipo de proteção pode ser reaplicado no 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);
}

Compilando o código

Adicionar Este código para a classe ThisDocument no seu projeto.Esse código pressupõe que a senha é armazenada em um campo chamado securelyStoredPassword.

Cache em pastas de trabalho do Excel

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

A dados de cache em uma pasta de trabalho do Excel que está protegida com a senha

  1. Na classe ThisWorkbook ou uma das classes n Sheet, marque um campo público ou a propriedade a ser armazenado em cache.For more information, see Cache de dados.

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

    Quando a pasta de trabalho é salva, o Tempo de execução Ferramentas do Visual Studio para o Office chama esse método para dar uma oportunidade para desproteger a pasta de trabalho.Isso permite que alterações nos dados armazenados em cache a ser salvo.

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

    Após salva a pasta de trabalho, o Tempo de execução Ferramentas do Visual Studio para o Office chama esse método lhe oferece a oportunidade de reaplicar proteção para a pasta de trabalho.

Exemplo

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

Compilando o código

Adicionar Este código para a classe ThisWorkbook no seu projeto.Esse código pressupõe que a senha é armazenada em um campo chamado securelyStoredPassword.

Consulte também

Tarefas

Como: Armazenar em cache dados para uso off-line ou em um servidor

Como: Armazenar em cache programaticamente uma Origem de dados em um documento do Office

Conceitos

Cache de dados

Date

History

Motivo

De 2008 de julho

Novo tópico.

Alteração de recurso do SP1.