Condividi tramite


Procedura: memorizzare dati nella cache di un documento protetto da password

Se si aggiungono dati alla cache dei dati in un documento o una cartella di lavoro protetta con password, le modifiche ai dati memorizzati nella cache non vengono salvate automaticamente. È possibile salvare le modifiche ai dati memorizzati nella cache eseguendo l'override di due metodi nel progetto.

Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di documento per Excel 2007, Excel 2010, Word 2007 e Word 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.

Memorizzazione nella cache di documenti di Word

Per memorizzare dati nella cache di un documento di Word protetto da password

  1. Nella classe ThisDocument, contrassegnare una proprietà o un campo pubblico da memorizzare nella cache. Per ulteriori informazioni, vedere Memorizzazione di dati nella cache.

  2. Eseguire l'override del metodo DocumentBase.UnprotectDocument nella classe ThisDocument e rimuovere la protezione del documento.

    Quando il documento viene salvato, attraverso il Runtime di Visual Studio Tools per Office viene chiamato questo metodo per poter rimuovere la protezione del documento. Questa operazione consente il salvataggio delle modifiche apportate ai dati memorizzati nella cache.

  3. Eseguire l'override del metodo DocumentBase.ProtectDocument nella classe ThisDocument e riapplicare la protezione al documento.

    Dopo avere salvato il documento, attraverso il Runtime di Visual Studio Tools per Office viene chiamato questo metodo per poter riapplicare la protezione al documento.

Esempio

Nell'esempio di codice seguente viene illustrato come memorizzare dati nella cache di un documento di Word protetto con una password. Prima di rimuovere la protezione attraverso il metodo DocumentBase.UnprotectDocument, il codice salva il valore ProtectionType corrente, in modo che, tramite il metodo DocumentBase.ProtectDocument, sia possibile riapplicare lo stesso tipo di protezione.

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

Compilazione del codice

Aggiungere questo codice alla classe ThisDocument del progetto. In questo codice si presuppone che la password sia memorizzata in un campo denominato securelyStoredPassword.

Memorizzazione nella cache delle cartelle di lavoro di Excel

Nei progetti Excel, questa procedura è necessaria solo quando si protegge l'intera cartella di lavoro con una password tramite il metodo Workbook.Protect. Questa procedura non è necessaria se si protegge solo un foglio di lavoro specifico con una password tramite il metodo Worksheet.Protect.

Per memorizzare dati nella cache di una cartella di lavoro di Excel protetta da password

  1. Nella classe ThisWorkbook o in una delle classi Sheetn, contrassegnare una proprietà o un campo pubblico da memorizzare nella cache. Per ulteriori informazioni, vedere Memorizzazione di dati nella cache.

  2. Eseguire l'override del metodo WorkbookBase.UnprotectDocument nella classe ThisWorkbook e rimuovere la protezione della cartella di lavoro.

    Quando la cartella di lavoro viene salvata, attraverso il Runtime di Visual Studio Tools per Office viene chiamato questo metodo per poter rimuovere la protezione della cartella di lavoro. Questa operazione consente il salvataggio delle modifiche apportate ai dati memorizzati nella cache.

  3. Eseguire l'override del metodo WorkbookBase.ProtectDocument nella classe ThisWorkbook e riapplicare la protezione al documento.

    Dopo avere salvato la cartella di lavoro, attraverso il Runtime di Visual Studio Tools per Office viene chiamato questo metodo per poter riapplicare la protezione alla cartella di lavoro.

Esempio

Nell'esempio di codice seguente viene illustrato come memorizzare dati nella cache di una cartella di lavoro di Excel protetta con una password. Prima di rimuovere la protezione attraverso il metodo WorkbookBase.UnprotectDocument, il codice salva i valori ProtectStructure e ProtectWindows correnti, in modo che, tramite il metodo WorkbookBase.ProtectDocument, sia possibile riapplicare lo stesso tipo di protezione.

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

Compilazione del codice

Aggiungere questo codice alla classe ThisWorkbook del progetto. In questo codice si presuppone che la password sia memorizzata in un campo denominato securelyStoredPassword.

Vedere anche

Attività

Procedura: memorizzare dati nella cache per l'utilizzo offline o su un server

Procedura: memorizzare nella cache a livello di codice un'origine dati di un documento di Office

Concetti

Memorizzazione di dati nella cache