Partager via


Comment : mettre en cache des données dans un document protégé par un mot de passe

Si vous ajoutez des données au cache de données dans un document ou un classeur protégés par un mot de passe, les modifications apportées aux données en mémoire cache ne seront pas enregistrées automatiquement.Vous pouvez enregistrer des modifications de données en mémoire cache en substituant deux méthodes dans votre projet.

S'applique à : Les informations contenues dans cette rubrique s'appliquent aux projets de niveau document pour les applications suivantes : Excel 2013, Excel 2010, Word 2013 et Word 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.

Mise en cache dans les documents Word

Pour mettre en cache des données dans un document Word protégé par un mot de passe

  1. Dans la classe ThisDocument, marquez un champ public ou une propriété à mettre en cache.Pour plus d’informations, consultez Mise en cache des données.

  2. Substituez la méthode DocumentBase.UnprotectDocument dans la classe ThisDocument et supprimez la protection du document.

    Lorsque le document est enregistré, Visual Studio Tools pour Office Runtime appelle cette méthode pour vous donner la possibilité de déprotéger le document.Cela permet l'enregistrement des modifications apportées aux données mises en cache.

  3. Substituez la méthode DocumentBase.ProtectDocument dans la classe ThisDocument et rétablissez la protection du document.

    Une fois le document enregistré, Visual Studio Tools pour Office Runtime appelle cette méthode pour vous donner la possibilité de réappliquer la protection du document.

Cc668203.collapse_all(fr-fr,VS.110).gifExemple

L'exemple de code suivant montre comment mettre en cache des données dans un document Word protégé par un mot de passe.Avant que le code ne retire la protection dans la méthode DocumentBase.UnprotectDocument, il enregistre la valeur ProtectionType actuelle afin que le même type de protection puisse être rétabli dans la méthode 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(fr-fr,VS.110).gifCompilation du code

Ajoutez ce code à la classe ThisDocument de votre projet.Il suppose que le mot de passe est stocké dans un champ nommé securelyStoredPassword.

Mise en cache dans les classeurs Excel

Dans les projets Excel, cette procédure est nécessaire uniquement lorsque vous protégez le classeur entier avec un mot de passe en utilisant la méthode Workbook.Protect.Elle n'est pas nécessaire si vous protégez uniquement une feuille de calcul spécifique avec un mot de passe en utilisant la méthode Worksheet.Protect.

Pour mettre en cache des données dans un classeur Excel protégé par un mot de passe

  1. Dans la classe ThisWorkbook ou une des classes Sheetn, marquez un champ public ou une propriété à mettre en cache.Pour plus d’informations, consultez Mise en cache des données.

  2. Substituez la méthode WorkbookBase.UnprotectDocument dans la classe ThisWorkbook et supprimez la protection du classeur.

    Lorsque le classeur est enregistré, Visual Studio Tools pour Office Runtime appelle cette méthode pour vous donner la possibilité de déprotéger le classeur.Cela permet l'enregistrement des modifications apportées aux données mises en cache.

  3. Substituez la méthode WorkbookBase.ProtectDocument dans la classe ThisWorkbook et rétablissez la protection du document.

    Une fois le classeur enregistré, Visual Studio Tools pour Office Runtime appelle cette méthode pour vous donner la possibilité de réappliquer la protection du classeur.

Cc668203.collapse_all(fr-fr,VS.110).gifExemple

L'exemple de code suivant montre comment mettre en cache des données dans un classeur Excel protégé par un mot de passe.Avant que le code ne supprime la protection dans la méthode WorkbookBase.UnprotectDocument, il enregistre les valeurs ProtectStructure et ProtectWindows actuelles, afin que le même type de protection puisse être rétabli dans la méthode 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(fr-fr,VS.110).gifCompilation du code

Ajoutez ce code à la classe ThisWorkbook de votre projet.Il suppose que le mot de passe est stocké dans un champ nommé securelyStoredPassword.

Voir aussi

Tâches

Comment : mettre en cache des données pour une utilisation hors connexion ou sur un serveur

Comment : mettre en cache par programmation une source de données dans un document Office

Concepts

Mise en cache des données