Freigeben über


Gewusst wie: Zwischenspeichern von Daten in einem kennwortgeschützten Dokument

Aktualisiert: Juli 2008

Betrifft

Die Informationen in diesem Thema gelten nur für die angegebenen Projekte und Versionen von Visual Studio Tools for Office von Microsoft Office.

Projekttyp

  • Projekte auf Dokumentebene

Microsoft Office-Version

  • 2007 Microsoft Office System

Weitere Informationen hierzu finden Sie unter Verfügbare Features nach Anwendung und Projekttyp.

In Projekten auf Dokumentenebene für Word 2007 und Excel 2007 werden Änderungen an zwischengespeicherten Daten nicht gespeichert, wenn Sie in einem kennwortgeschützten Dokument oder einer Arbeitsmappe dem Datencache Daten hinzufügen.

Ab Visual Studio 2008 Service Pack 1 (SP1) können Sie Änderungen an zwischengespeicherten Daten durch das Überschreiben zweier Methoden in Ihrem Projekt speichern.

Zwischenspeichern in Word-Dokumenten

So speichern Sie Daten in einem kennwortgeschützten Word-Dokument zwischen

  1. Markieren Sie in der ThisDocument-Klasse ein öffentliches Feld oder eine Eigenschaft, die zwischengespeichert werden soll. Weitere Informationen hierzu finden Sie unter Zwischenspeichern von Daten.

  2. Überschreiben Sie die Document.UnprotectDocument-Methode in der ThisDocument-Klasse, und entfernen Sie den Schutz des Dokuments.

    Beim Speichern des Dokuments ruft die Visual Studio Tools for Office-Laufzeit diese Methode auf, damit der Schutz des Dokuments aufgehoben werden kann. So können Änderungen an den zwischengespeicherten Daten gespeichert werden.

  3. Überschreiben Sie die Document.ProtectDocument-Methode in der ThisDocument-Klasse, und aktivieren Sie den Schutz des Dokuments erneut.

    Nach dem Speichern des Dokuments ruft die Visual Studio Tools for Office-Laufzeit diese Methode auf, damit der Schutz des Dokuments wieder aktiviert werden kann.

Beispiel

Im folgenden Codebeispiel wird gezeigt, wie Daten in einem kennwortgeschützten Word-Dokument zwischengespeichert werden. Bevor der Schutz mit der Document.UnprotectDocument-Methode aufgehoben wird, wird der aktuelle ProtectionType-Wert gespeichert, sodass in der Document.ProtectDocument-Methode der gleiche Schutztyp verwendet werden kann.

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

Kompilieren des Codes

Fügen Sie diesen Code der ThisDocument-Klasse im Projekt hinzu. Im Code wird davon ausgegangen, dass das Kennwort in einem Feld mit dem Namen securelyStoredPassword gespeichert wird.

Zwischenspeichern in Excel-Arbeitsmappen

In Excel-Projekten ist dieses Verfahren nur dann erforderlich, wenn die gesamte Arbeitsmappe mithilfe der Workbook.Protect-Methode mit einem Kennwort geschützt wird. Dieses Verfahren ist nicht erforderlich, wenn nur eine bestimmte Arbeitsmappe mithilfe der Worksheet.Protect-Methode mit einem Kennwort geschützt wird.

So speichern Sie Daten in einer kennwortgeschützten Excel-Arbeitsmappe zwischen

  1. Markieren Sie in der ThisWorkbook-Klasse oder einer der Sheetn-Klassen ein öffentliches Feld oder eine Eigenschaft, die zwischengespeichert werden soll. Weitere Informationen hierzu finden Sie unter Zwischenspeichern von Daten.

  2. Überschreiben Sie die Workbook.UnprotectDocument-Methode in der ThisWorkbook-Klasse, und entfernen Sie den Schutz der Arbeitsmappe.

    Beim Speichern der Arbeitsmappe ruft die Visual Studio Tools for Office-Laufzeit diese Methode auf, damit der Schutz der Arbeitsmappe aufgehoben werden kann. So können Änderungen an den zwischengespeicherten Daten gespeichert werden. 

  3. Überschreiben Sie die Workbook.ProtectDocument-Methode in der ThisWorkbook-Klasse, und aktivieren Sie den Schutz des Dokuments erneut.

    Nach dem Speichern der Arbeitsmappe ruft die Visual Studio Tools for Office-Laufzeit diese Methode auf, damit der Schutz der Arbeitsmappe wieder aktiviert werden kann.

Beispiel

Im folgenden Codebeispiel wird gezeigt, wie Daten in einer kennwortgeschützten Excel-Arbeitsmappe zwischengespeichert werden. Bevor der Schutz mit der Workbook.UnprotectDocument-Methode aufgehoben wird, werden die aktuellen ProtectStructure- und ProtectWindows-Werte gespeichert, sodass dieselbe Art von Schutz später in der Workbook.ProtectDocument-Methode verwendet werden kann.

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

Kompilieren des Codes

Fügen Sie diesen Code der ThisWorkbook-Klasse im Projekt hinzu. Im Code wird davon ausgegangen, dass das Kennwort in einem Feld mit dem Namen securelyStoredPassword gespeichert wird.

Siehe auch

Aufgaben

Gewusst wie: Zwischenspeichern von Daten zur Offlineverwendung oder zur Verwendung auf einem Server

Gewusst wie: Programmgesteuertes Zwischenspeichern von Datenquellen in einem Office-Dokument

Konzepte

Zwischenspeichern von Daten

Änderungsprotokoll

Date

Versionsgeschichte

Grund

Juli 2008

Neues Thema.

SP1-Featureänderung.