Ouvrir un fichier Excel avec VSTO sans l’afficher

À défaut, quand on créé un add-in Office avec les Visual Studio Tools for Office (VSTO pour C# et VB), l’ouverture de documents ouvre une nouvelle fenêtre par document. Ceci est valable pour tous les types de documents Office (Word, Excel, Poser Point, Visio…).

Si l’on souhaite cacher la fenêtre de ce document, on peut utiliser la collection Windows de celui-ci. Il y a cependant quelques effets de bord :

  • On ne peut exécuter aucune macro du fichier.
  • Le fichier peut demander à être enregistré à fermeture d’office (mais on peut ajouter un code à l’add-in pour interdire l’enregistrement).

Heureusement, il existe une solution plus élégante sous Excel : utiliser la propriété IsAddin du fichier. Celle-ci bien fait comprendre à office que le document est à considérer comme un add-in (ou un complément à notre add-in).

Comme indiqué par la documentation Excel, ceci a en plus les avantages suivants :

  • Il n’est jamais demandé à l’utilisateur d’enregistrer ce document.
  • Le document n’est pas visible.
  • La liste des macros n’est pas accessible à l’utilisateur (via les listes, et boites de dialogues).
  • On peut exécuter les macros du fichier.
  • La touche Shift n’a pas d’impact si elle est pressée lors de l’ouverture du document (l’utilisateur ne peut donc pas utiliser le debuger de macros Office pour intercepter vos macros)

Exemple d’utilisation :


// Fermeture du classeur courant
Globals.ThisAddIn.Application.ActiveWorkbook.Close(SaveChanges: false);

Workbook wb = Globals.ThisAddIn.Application.Workbooks.Open(
    // Fichier
    Filename: "MonFichier.xls",
    // Edition interdite
    ReadOnly: true,
    // Ne pas ajouter à l'historique
    AddToMru: false
    );

// Activer les macros
_wb.RunAutoMacros(Microsoft.Office.Interop.Excel.XlRunAutoMacro.xlAutoActivate);

//_pgpp.Application.Visible = false;
_wb.IsAddin = true;
Jérémy Jeanson

Comments

You have to be logged in to comment this post.