Comment : mettre en cache des données dans un document protégé par un mot de passeHow to: Cache Data in a Password-Protected Document

Si vous ajoutez des données dans le cache de données dans un document ou le classeur est protégé par un mot de passe, les modifications apportées aux données mises en cache ne sont pas enregistrées automatiquement.If you add data to the data cache in a document or workbook that is protected with a password, changes to the cached data are not saved automatically. Vous pouvez enregistrer les modifications aux données mises en cache en substituant deux méthodes dans votre projet.You can save changes to the cached data by overriding two methods in your project.

S’applique à : Les informations contenues dans cette rubrique s’appliquent aux projets de niveau document pour Excel et Word.Applies to: The information in this topic applies to document-level projects for Excel and Word. Pour plus d’informations, consultez Fonctionnalités disponibles par type d’application et de projet Office.For more information, see Features Available by Office Application and Project Type.

La mise en cache dans les Documents WordCaching in Word Documents

En cache des données dans un document Word protégé par un mot de passeTo cache data in a Word document that is protected with a password

  1. Dans la ThisDocument de classe, marquez un champ public ou une propriété doit être mis en cache.In the ThisDocument class, mark a public field or property to be cached. Pour plus d'informations, consultez Caching Data.For more information, see Caching Data.

  2. Remplacer la UnprotectDocument méthode dans le ThisDocument de classe et de supprimer la protection du document.Override the UnprotectDocument method in the ThisDocument class and remove protection from the document.

    Lorsque le document est enregistré, le Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime appelle cette méthode pour vous donner la possibilité pour la protection du document.When the document is saved, the Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime calls this method to give you an opportunity to unprotect the document. Ainsi, les modifications apportées à l’enregistrement des données mises en cache.This enables changes to the cached data to be saved.

  3. Remplacer la ProtectDocument méthode dans le ThisDocument de classe et de réappliquer la protection du document.Override the ProtectDocument method in the ThisDocument class and reapply protection to the document.

    Une fois que le document est enregistré, le Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime appelle cette méthode pour vous donner la possibilité de réappliquer la protection du document.After the document is saved, the Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime calls this method to give you an opportunity to reapply protection to the document.

ExempleExample

L’exemple de code suivant montre comment mettre en cache des données dans un document Word protégé par un mot de passe.The following code example demonstrates how to cache data in a Word document that is protected with a password. Avant que le code supprime la protection dans le UnprotectDocument (méthode), il enregistre le ProtectionType valeur, afin que le même type de protection puisse être rétabli dans la ProtectDocument (méthode).Before the code removes the protection in the UnprotectDocument method, it saves the current ProtectionType value, so that the same type of protection can be reapplied in the ProtectDocument method.

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

Compilation du codeCompiling the Code

Ajoutez ce code à la ThisDocument classe dans votre projet.Add this code to the ThisDocument class in your project. Ce code suppose que le mot de passe est stocké dans un champ nommé securelyStoredPassword.This code assumes that the password is stored in a field named securelyStoredPassword.

La mise en cache dans les classeurs ExcelCaching in Excel Workbooks

Dans les projets Excel, cette procédure est nécessaire uniquement lorsque vous protégez le classeur entier avec un mot de passe à l’aide de la Protect (méthode).In Excel projects, this procedure is necessary only when you protect the entire workbook with a password by using the Protect method. Cette procédure n’est pas nécessaire si vous protégez uniquement une feuille de calcul spécifique avec un mot de passe à l’aide de la Protect (méthode).This procedure is not necessary if you protect only a specific worksheet with a password by using the Protect method.

Pour le cache des données dans un classeur Excel qui est protégé par un mot de passeTo cache data in an Excel workbook that is protected with a password

  1. Dans le ThisWorkbook classe ou une de le Sheet n classes, marquez un champ public ou une propriété doit être mis en cache.In the ThisWorkbook class or one of the Sheetn classes, mark a public field or property to be cached. Pour plus d'informations, consultez Caching Data.For more information, see Caching Data.

  2. Remplacer la UnprotectDocument méthode dans le ThisWorkbook de classe et de supprimer la protection du classeur.Override the UnprotectDocument method in the ThisWorkbook class and remove protection from the workbook.

    Lorsque le classeur est enregistré, le Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime appelle cette méthode pour vous donner la possibilité pour la protection du classeur.When the workbook is saved, the Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime calls this method to give you an opportunity to unprotect the workbook. Ainsi, les modifications apportées à l’enregistrement des données mises en cache.This enables changes to the cached data to be saved.

  3. Remplacer la ProtectDocument méthode dans le ThisWorkbook de classe et de réappliquer la protection du document.Override the ProtectDocument method in the ThisWorkbook class and reapply protection to the document.

    Une fois que le classeur est enregistré, le Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime appelle cette méthode pour vous donner la possibilité de réappliquer la protection du classeur.After the workbook is saved, the Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime calls this method to give you an opportunity to reapply protection to the workbook.

ExempleExample

L’exemple de code suivant montre comment mettre en cache des données dans un classeur Excel qui est protégé par un mot de passe.The following code example demonstrates how to cache data in an Excel workbook that is protected with a password. Avant que le code supprime la protection dans le UnprotectDocument (méthode), il enregistre le ProtectStructure et ProtectWindows des valeurs, afin que le même type de protection puisse être rétabli dans la ProtectDocument (méthode).Before the code removes the protection in the UnprotectDocument method, it saves the current ProtectStructure and ProtectWindows values, so that the same type of protection can be reapplied in the ProtectDocument method.

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

Compilation du codeCompiling the Code

Ajoutez ce code à la ThisWorkbook classe dans votre projet.Add this code to the ThisWorkbook class in your project. Ce code suppose que le mot de passe est stocké dans un champ nommé securelyStoredPassword.This code assumes that the password is stored in a field named securelyStoredPassword.

Voir aussiSee Also

Mise en cache de données Caching Data
Comment : mettre en Cache des données pour une utilisation hors connexion ou sur un serveur How to: Cache Data for Use Offline or on a Server
Guide pratique pour mettre en cache par programmation une source de données dans un document OfficeHow to: Programmatically Cache a Data Source in an Office Document