F. Documentation d’API

think-cell vous permet de contrôler certaines fonctionnalités via une API. Vous trouverez ici une Présentation de toutes les fonctions API disponibles, ainsi que des instructions générales sur la configuration de votre environnement de développement pour écrire des macros, des compléments ou des programmes autonomes pouvant y accéder.

F.1
Mise en route
F.2
Référence API

F.1 Mise en route

L’API de think-cell étant intégrée au modèle Office Automation, elle est accessible avec tout langage permettant de programmer Office, tel que VBA (Visual Basic for Applications) ou C#.

Le point d'entrée dans think-cell est l'objet complément think-cell, accessible via la collection Application.COMAddIns. Les appels à think-cell sont toujours à liaison tardive et il n'existe donc aucune bibliothèque ou référence de types à ajouter. Pour plus d'explications, reportez-vous à la base de connaissances de Microsoft :

Utilisation d’une association précoce et tardive dans Automation

Certaines fonctions API sont des méthodes d’objet complément think-cell dans PowerPoint et d’objet complément think-cell dans Excel. Nous utiliserons tcPpAddIn comme références au complément PowerPoint et tcXlAddIn comme références au complément Excel.

F.1.1 Visual Basic for Applications

Pour écrire des macros à l’aide de Visual Basic for Applications (VBA), vous utilisez l’environnement de développement intégré dans l’application hôte Office. Vous pouvez y accéder en appuyant sur Alt+F11. La définition d’une macro est généralement contenue dans un module, que vous pouvez ajouter via InsérerModule. Vous pouvez consulter toutes les macros définies pour un document donné en appuyant sur Alt+F8.

Pour indiquer que les appels de méthode au complément think-cell sont à liaison tardive, vous devez définir la variable comprenant la référence comme Object :

Dim tcaddin As Object 
Set tcaddin = Application.COMAddIns("thinkcell.addin").Object

La bibliothèque de types pour l’application hôte Office est toujours référencée par défaut. Si vous avez besoin d’accéder au modèle d’objet d’une autre application Office, vous devez ajouter sa bibliothèque de types comme référence.

Par exemple, si vous souhaitez utiliser une macro dans PowerPoint pour modifier des données dans une feuille Excel avant de mettre à jour un graphique think-cell à partir de ces dernières, vous devez ajouter manuellement la bibliothèque d’objets Microsoft Excel 16.0 via la boîte de dialogue OutilsRéférences dans l’environnement de développement VBA.

Remarque : 16.0 est le numéro de version d’Office 2016 et des versions ultérieures. Pour Office 2010 ou 2013, vous devez utiliser des bibliothèques d’objets 14.0 ou 15.0, respectivement. Si vous avez plusieurs versions d’Office installées, la boîte de dialogue Références affichera uniquement les bibliothèques d’objets de la dernière version installée. Nous supposerons pour ce qui suit que vous utilisez Office 2016 ou une version ultérieure.

L’utilisation de Application.COMAddIns("thinkcell.addin").Object vous permettra toujours d’obtenir l’objet complément think-cell de l’application hôte Office actuelle, c’est-à-dire tcPpAddIn ou tcXlAddIn, en fonction de si vous l’utilisez dans PowerPoint ou Excel. Veillez à acquérir une instance d’application appropriée pour acquérir une référence à l’objet complément dans l’autre application Office et accéder aux fonctions API qu’il expose.

Par exemple, pour acquérir une référence à tcXlAddIn depuis PowerPoint :

Dim xlapp As Object
Set xlapp = New Excel.Application

Dim tcXlAddIn As Object
Set tcXlAddIn = xlapp.COMAddIns("thinkcell.addin").Object

Veuillez remarquer que cela nécessite d’ajouter la bibliothèque d’objets d’Excel comme référence.

Nous recommandons d’utiliser la déclaration Option Explicit, qui force la déclaration explicite de toutes les variables et d’aider ainsi à éviter des erreurs de programmation courantes et à améliorer les suggestions fournies par IntelliSense. Vous pouvez l’ajouter automatiquement à tous les modules en activant OutilsOptionsParamètres du codeExiger une déclaration de variable. Elle est incluse dans tous nos exemples de codes.

F.1.2 C#

Vous pouvez utiliser l’API think-cell à partir de C# lorsque vous développez des compléments et des extensions de codes de documents qui s’exécutent dans une application d’hôte Office, et lorsque vous développez des applications autonomes.

Nous supposerons pour ce qui suit que vous utilisez Visual Studio 2017 ou une version ultérieure pour développer les solutions Office dans C#. Veuillez vous référer à la section suivante pour obtenir des instructions d’installation plus précises concernant le développement de compléments. Nous indiquerons pour chacun de nos exemples de codes le modèle de projet Visual Studio utilisé.

Pour effectuer des appels de méthode à l’objet complément think-cell à liaison tardive, définissez la variable contenant la référence à l’objet complément think-cell comme dynamic. Il s’agit également du type déduit par le compilateur lorsque vous définissez la référence comme var, alors vous pouvez simplement écrire :

var tcPpAddIn = ppapp.COMAddIns.Item("thinkcell.addin").Object;

Ici, ppapp est une référence à un objet Application PowerPoint dans lequel think-cell est chargé.

Pour accéder au modèle d’objet d’une application Office, vous devez ajouter sa bibliothèque de types ou son assembly PIA (Primary Interop Assembly) comme référence à votre projet. Nous recommandons d’ajouter, si possible, la bibliothèque de types, étant donné que Visual Studio ajoutera automatiquement une référence à la PIA correspondante si celle-ci est disponible, ou générera un assembly d’interopérabilité à partir de la bibliothèque de types si aucune n’est disponible (voir ici).

Par exemple, pour pouvoir obtenir la référence à un objet complément think-cell comme ci-dessus, nous devrions ajouter la bibliothèque d’objets Microsoft PowerPoint 16.0 située dans l’onglet COMBibliothèques de types de la boîte de dialogue Gestionnaire de références. Selon votre type de projet, vous pouvez accéder à cette boîte de dialogue en effectuant un clic droit sur Références ou Dépendances dans Explorateur de solutions et en sélectionnant Ajouter une référence (COM).

Remarque : 16.0 est le numéro de version d’Office 2016 et des versions ultérieures. En utilisant l’option Types d’interopérabilité intégrée, qui est activée par défaut pour une référence à la bibliothèque de types COM, une application compilée avec cette référence sera rétrocompatible et postcompatible avec les autres versions d’Office, aussi longtemps que toutes les interfaces utilisées existent dans leur modèle d’objet. Pour plus d’informations, voir ici.

Les fonctions API de think-cell indique les erreurs en utilisant des HRESULT COM. Certaines d’entre elles sont automatiquement mappées dans les classes d’exception .NET correspondantes, voir Comment : mapper des HRESULT et des exceptions .

F.1.2.1 Développement de compléments

Pour développer des compléments pour Office ou des extensions de codes pour des documents Office, vous utilisez les modèles de projet Complément VSTO PowerPoint/Excel et Modèle/Classeur Excel VSTO. Ces derniers font partie des Outils de développement Office pour Visual Studio, qui sont installés dans la configuration par défaut. Dans le cas où ces outils et modèles ne seraient pas disponibles dans votre installation Visual Studio, vous pouvez les ajouter, par exemple, en vous rendant dans ParamètresApplicationsVisual Studio 2022ModifierAutres ensembles d’outils, en vérifiant Développement Office/SharePoint et en cliquant sur Modifier. Voir également la documentation de Microsoft ici et ici.

Le PIA de l’application hôte Office du modèle sélectionné est toujours chargé par défaut. Si vous avez besoin d’accéder au modèle d’objet d’une autre application Office, vous devez ajouter sa bibliothèque de types comme référence, tel qu’expliqué ci-dessus.

Remarque : Il est impossible d’utiliser les API de think-cell à partir de Compléments Web Office, malheureusement renommé « Compléments Office » par Microsoft, car ils ne peuvent interagir directement avec le modèle d’objet de l’application Office, et notamment d’interagir avec les compléments COM, tels que think-cell.

F.2 Référence API

F.2.1
Mise à jour des éléments et modèles de présentation avec des données Excel
F.2.2
Contrôle des styles
F.2.3
Importer des graphiques Mekko Graphics
F.2.4
Divers

F.2.1 Mise à jour des éléments et modèles de présentation avec des données Excel

Les fonctions abordées dans cette section peuvent être utilisées pour mettre à jour des éléments think-cell via un programme avec des données d’Excel. UpdateChart met à jour des éléments think-cell, spécifiés par un nom qui leur est attribué dans le modèle, avec des données d’une plage Excel passée en argument. Voir également Présentation de l’automatisation sur comment préparer le modèle.

PresentationFromTemplate instancie un modèle de présentation avec des données à partir d’un classeur Excel lié. Voir également Liaisons de données Excel sur comment créer des liens Excel.

Les fonctions abordées dans cette section sont des méthodes du complément think-cell dans Excel.

F.2.1.1 Tableau de mise à jour

F.2.1.1.1 Signature
VBA
tcXlAddIn.UpdateChart( _ 
    target As Object, _ 
    strName As String, _ 
    rgData As Excel.Range, _ 
    bTransposed As Boolean _ 
)
C#
void tcXlAddIn.UpdateChart(
    object target,
    string strName,
    Excel.Range rgData,
    bool bTransposed
);
F.2.1.1.2 Description

Cette fonction met à jour tous les éléments dans target avec le nom strName avec les données contenues dans rgData. Pour assurer la bonne interprétation des données pour les graphiques, la plage rgData doit se conformer à la mise en page de leur feuille de données par défaut, ou sa version transposée, voir également Création d’un graphique à partir d’Excel et Adaptation de la disposition des données. L’utilisation de la version par défaut et transposée est indiquée en paramétrant bTransposed sur false ou true, respectivement. Pour les éléments autres que les graphiques, comme les tableaux, la valeur bTransposed est ignorée.

target doit être une Presentation ou une SlideRange, ou une Slide, un Master ou une CustomLayout unique.

Le nom strName ne tient pas compte de la casse. Il doit avoir été attribué au préalable dans PowerPoint à l’aide du contrôle de propriété Nom UpdateChart, tel que décrit dans Présentation de l’automatisation.

Pour garantir le ciblage des éléments corrects, assurez-vous qu’ils sont les seuls éléments avec leur Nom UpdateChart configurés sur strName dans l’objet passé en tant que pres.

Si un élément ciblé est lié à une plage de données Excel lors de l'invocation de cette fonction, le lien est interrompu. Après quoi l’élément n'est plus lié à aucune plage Excel.

F.2.1.1.3 Exemples

Pour utiliser ces modèles, préparez une présentation tel que décrit dans Présentation de l’automatisation, et enregistrez-la sous C:\Samples\UpdateChart\template.pptx.

VBA

Pour utiliser ce modèle, ajoutez-le à un module dans un classeur Excel.

Cela nécessite une référence vers la bibliothèque d’objets Microsoft PowerPoint 16.0 (voir Visual Basic for Applications pour plus de détails).

L’exécution de UpdateChart_Sample dans un classeur mettra à jour le graphique dans le modèle de présentation avec les données contenues dans la plage A1:D5 de sa première feuille.

Option Explicit 
 
Sub UpdateChart_Sample() 

    ' Get the range containing the new data 
    Dim rng As Excel.Range 
    Set rng = ActiveWorkbook.Sheets(1).Range("A1:D5") 

    ' Get the think-cell add-in object 
    Dim tcXlAddIn As Object 
    Set tcXlAddIn = Application.COMAddIns("thinkcell.addin").Object 

    ' Get a PowerPoint instance. Hold on to this 
    ' object as long as you want to access the 
    ' generated presentations. There can only be a 
    ' single PowerPoint instance. If there is no 
    ' PowerPoint running, one will be started. 
    ' Otherwise the existing one is used.

    Dim ppapp As Object 
    Set ppapp = New PowerPoint.Application 

    Dim pres As PowerPoint.Presentation 

    ' PowerPoint window visible 
    ' Set pres = ppapp.Presentations.Open( _ 
    '  Filename:="C:\\Samples\\UpdateChart\\template.pptx", _
    '  Untitled:=msoTrue) 

    ' PowerPoint window invisible 

    Set pres = ppapp.Presentations.Open( _
    Filename:="C:\\Samples\\UpdateChart\\template.pptx", _
    Untitled:=msoTrue, _
    WithWindow:=msoFalse)

    Call tcXlAddIn.UpdateChart(pres, "Chart1", rng, False) 

    ' Save the updated presentation 
    pres.SaveAs ("C:\\Samples\\UpdateChart\\template_updated.pptx") 
    pres.Close 

    ppapp.Quit 
End Sub
C#

Pour utiliser ce modèle, remplacez le code dans Program.cs du modèle de projet Console App C # par celui-ci

Cela nécessite une référence vers la bibliothèque d’objets Microsoft PowerPoint 16.0, la bibliothèque d’objets Microsoft Excel 16.0 et la bibliothèque d’objets Microsoft Ofice 16.0 (voir C# pour plus de détails).

L’exécution de l’application obtenue mettra à jour le graphique dans le modèle de présentation afin qu’il contienne une série unique nommée « Série 1 » avec les valeurs 1, 2, 3, et qu’il sauvegarde le résultat sous template_updated.pptx.

using Excel = Microsoft.Office.Interop.Excel;
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Office = Microsoft.Office.Core;

namespace ConsoleApplication_UpdateChart
{
    class Program
    {
        static void Main()
        {
            Excel.Application xlapp = new Excel.Application { Visible = true };

            Excel.Workbook workbook = xlapp.Workbooks.Add(1);
            Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1];
            worksheet.Cells[3, 1] = "Series 1";
            worksheet.Cells[3, 2] = 1;
            worksheet.Cells[3, 3] = 2;
            worksheet.Cells[3, 4] = 3;

            PowerPoint.Application ppapp = new PowerPoint.Application();
            PowerPoint.Presentation presentation = ppapp.Presentations.Open(
                    "C:\\Samples\\UpdateChart\\template.pptx",
                    Office.MsoTriState.msoFalse,
                    Office.MsoTriState.msoTrue
            );

            var tcXlAddIn = xlapp.COMAddIns.Item("thinkcell.addin").Object;
            tcXlAddIn.UpdateChart(
                presentation,
                "Chart1",
                worksheet.get_Range("A1", "D3"),
                false
            );

            presentation.SaveAs("C:\\Samples\\UpdateChart\\template_updated.pptx");
            presentation.Close();
            ppapp.Quit();

            workbook.Close(false);
            xlapp.Quit();
        }
    }
}

F.2.1.2 Présentation depuis un modèle

F.2.1.2.1 Signature
VBA
tcXlAddIn.PresentationFromTemplate( _ 
    wb As Excel.Workbook, _ 
    strTemplate As String, _ 
    ppapp As PowerPoint.Application _ 
) As PowerPoint.Presentation
C#
PowerPoint.Presentation tcXlAddIn.PresentationFromTemplate(
    Excel.Workbook wb,
    string strTemplate,
    PowerPoint.Application ppapp
);
F.2.1.2.2 Description

Cette fonction utilise des liaisons de données entre le classeur Excel wb et le modèle comportant le nom du fichier strTemplate pour créer le modèle en mettant à jour les éléments liés avec les données provenant des plages auxquelles ils sont liés. Il en résulte une nouvelle présentation dans l'instance PowerPoint ppapp.

strTemplate peut être un chemin complet ou un chemin relatif qui est alors indiqué par rapport à l'emplacement du fichier du classeur Excel wb.

Tous les éléments dans strTemplate liés au classeur Excel wb sont mis à jour (que l'option de mise à jour automatique soit activée ou non). Dans la présentation obtenue, leurs liaisons de données sont interrompues afin d’éviter toute autre modification de ces éléments.

Les éléments dans strTemplate qui sont liés à des classeurs Excel autres que wb ne sont pas modifiés et restent liés. Il est donc possible de mettre à jour des liaisons à partir de plusieurs classeurs Excel, en enregistrant le résultat de cette fonction en tant que nouveau modèle et en la rappelant avec le classeur suivant.

Si vous souhaitez contrôler les couleurs des segments du graphique ou le format des cellules du tableau avec le lien Excel, vous pouvez définir le jeu de couleurs sur Utiliser le remplissage de la feuille de données en superposition (voir Jeu de couleurs) ou les options Utiliser la feuille de données… (voir Mise en forme d’un tableau), respectivement. De même, pour contrôler le format des nombres avec la liaison Excel, activez l'option Utiliser le format Excel (voir Format des nombres).

Veillez à définir les options de formatage pertinentes et le format des nombres des cellules respectives dans Excel avant d'appeler PresentationFromTemplate.

F.2.1.2.3 Exemples

Pour utiliser ces modèles, créez tout d’abord une présentation avec un graphique empilé lié à la plage G1:K4 de la première feuille dans un classeur Excel, tel que décrit dans Création d’un graphique à partir d’Excel. Enregistrez dans le même répertoire la présentation obtenue sous C:\Samples\PresentationFromTemplate\template.pptx, et le classeur sous data.xlsx.

VBA

Pour utiliser ce modèle, ajoutez-le à un module dans le classeur Excel data.xlsx préparé, tel que décrit ci-dessus.

Cela nécessite une référence vers la bibliothèque d’objets Microsoft PowerPoint 16.0 (voir Visual Basic for Applications pour plus de détails).

L’exécution de PresentationFromTemplate_Sample modifiera la valeur de la cellule Sheet1!H3, qui est liée à la première valeur de la première série du graphique contenu dans template.pptx, de i=1 à 10, créera une nouvelle présentation avec le graphique dans le modèle mis à jour afin qu’il contienne cette valeur, et qu’elle ne soit plus liée au classeur, puis l’enregistrera sous output_i.pptx dans le même dossier que le modèle.

Option Explicit

Sub PresentationFromTemplate_Sample()
    ' Get the range to modify. It is more efficient
    ' to do this once rather than within the loop.
    Dim rng As Excel.Range
    Set rng = ActiveWorkbook.Sheets(1).Cells(3, 8)

    ' Get the think-cell add-in object
    Dim tcXlAddIn As Object
    Set tcXlAddIn = Application.COMAddIns("thinkcell.addin").Object

    ' Get a PowerPoint instance. Hold on to this
    ' object as long as you want to access the
    ' generated presentations. There can only be a
    ' single PowerPoint instance. If there is no
    ' PowerPoint running, one will be started.
    ' Otherwise the existing one is used.
    Dim ppapp As Object
    Set ppapp = New PowerPoint.Application

    Dim i As Integer
    For i = 1 To 10
        ' Modify the range value.
        ' Note: Avoid selecting the cell prior to
        ' changing it. It is very slow and has
        ' undesirable side-effects.
        ' BAD:
        ' rng.Select
        ' ActiveWindow.Selection.Value = 0
        ' GOOD:
        rng.Value = i

        ' Generate a new presentation based on the
        ' linked template.
        Dim pres As PowerPoint.Presentation
        Set pres = tcXlAddIn.PresentationFromTemplate( _
            Excel.ActiveWorkbook, "template.pptx", ppapp _
        )

        ' If you want to modify the new presentation
        ' before saving it this is the place to do it.
        
        ' Save the new presentation
        pres.SaveAs "C:\Samples\PresentationFromTemplate\output_" & i & ".pptx"
        
        ' Explicitly close the presentation when we
        ' are done with it to free its memory.
        ' Letting the object go out of scope is not
        ' sufficient.
        pres.Close
    Next
End Sub
C#

Pour utiliser ce modèle, remplacez le code dans Program.cs du modèle de projet Console App C # par celui-ci

Cela nécessite une référence vers la bibliothèque d’objets Microsoft PowerPoint 16.0, la bibliothèque d’objets Microsoft Excel 16.0 et la bibliothèque d’objets Microsoft Ofice 16.0 (voir C# pour plus de détails).

L’exécution de l’application obtenue ouvrira Excel, chargera le classeur data.xlsx, modifiera la valeur de la cellule H3, qui est liée à la première valeur de la première série du graphique contenu dans template.pptx, de i=1 à 10, créera une nouvelle présentation avec le graphique dans le modèle mis à jour afin qu’il contienne cette valeur, et qu’elle ne soit plus liée au classeur, puis l’enregistrera sous output_i.pptx dans le même dossier que le modèle.

using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Excel = Microsoft.Office.Interop.Excel;

namespace ConsoleApplication_PresentationFromTemplate
{
    class Program
    {
        static void Main()
        {
            var xlapp = new Excel.Application { Visible = true };
            var tcXlAddIn = xlapp.COMAddIns.Item("thinkcell.addin").Object;
            var workbook = xlapp.Workbooks.Open("C:\\Samples\\PresentationFromTemplate\\data.xlsx");
            var ppapp = new PowerPoint.Application();
            for (var i = 1; i <= 10; ++i)
            {
                workbook.Sheets[1].Cells[3, 8] = i;

                PowerPoint.Presentation presentation = tcXlAddIn.PresentationFromTemplate(
                    workbook,
                    "C:\\Samples\\PresentationFromTemplate\\template.pptx",
                    ppapp
                );

                presentation.SaveAs("C:\\Samples\\PresentationFromTemplate\\output_" + i + ".pptx");
                presentation.Close();
            }
            ppapp.Quit();
            workbook.Close(false);
            xlapp.Quit();
        }
    }
}

F.2.2 Contrôle des styles

Les fonctions abordées dans cette section peuvent être utilisées pour charger, inspecter et supprimer des styles think-cell via un programme. LoadStyle charge un style à partir d’un fichier de style dans une diapositive de masque ou une mise en page personnalisée unique. LoadStyleForRegion charge un style à partir d’un fichier de style dans une zone spécifique d’une présentation personnalisée. GetStyleName retourne le nom du style chargé dans un masque ou une mise en page personnalisée. RemoveStyles supprime tous les styles d’une mise en page personnalisée.

Voir Création d’un style think-cell et Format des fichiers de style pour plus d’informations sur la création ou la modification de styles. Voir Chargement de fichiers de style pour plus d’informations sur leur chargement.

Les fonctions abordées dans cette section sont des méthodes du complément think-cell dans PowerPoint.

F.2.2.1 Charger des styles

F.2.2.1.1 Signature
VBA
tcPpAddIn.LoadStyle( _ 
    CustomLayoutOrMaster As Object, _ 
    FileName As String 
)
C#
void tcPpAddIn.LoadStyle(
    object CustomLayoutOrMaster,
    string FileName
);
F.2.2.1.2 Description

Cette fonction charge le style contenu dans un fichier de style au niveau de FileName dans un masque ou une mise en page personnalisée, spécifiée via le paramètre CustomLayoutOrMaster.

CustomLayoutOrMaster doit être une CustomLayout ou un Master.

L’application de cette fonction à une mise en page personnalisée possédant un style local (voir Charger le style pour une zone) provoque la suppression de ce dernier. En d’autres termes, vous devez charger le style à appliquer au reste de la diapositive via cette fonction avant de charger un style limité à une zone.

L’application de cette fonction à un masque provoque la suppression des styles chargés dans les mises en page personnalisées de ce masque, qu’ils soient locaux ou généraux. En d’autres termes, vous devez charger le style à appliquer aux mises en page personnalisées ne comportant pas de style spécifique dans le masque avant de charger un style appliqué à une mise en page personnalisée spécifique via cette fonction.

F.2.2.1.3 Exemples
VBA

Pour utiliser ce modèle, ajoutez le code suivant à un module dans PowerPoint (voir Visual Basic for Applications pour plus de détails).

Option Explicit
 
Sub LoadStyle_Sample() 

    ' Get the think-cell add-in object 
    Dim tcPpAddIn As Object 
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object 

    Dim master As Master
    Set master = Application.ActivePresentation.Designs(1).SlideMaster

    Dim style As String
    style = "C:\some\path\styles\style.xml"

    Call tcPpAddIn.LoadStyle(master, style)
End Sub

F.2.2.2 Charger le style pour une zone

F.2.2.2.1 Signature
VBA
tcPpAddIn.LoadStyleForRegion( _ 
    CustomLayout As PowerPoint.CustomLayout, _ 
    FileName As String, _
    Left as Single, _
    Top as Single, _
    Width as Single, _
    Height as Single _
)
C#
void tcPpAddIn.LoadStyleForRegion(
    PowerPoint.CustomLayout CustomLayout,
    string FileName,
    float Left,
    float Top,
    float Width,
    float Height
);
F.2.2.2.2 Description

Cette fonction charge le fichier de style au niveau de FileName dans la mise en page personnalisée CustomLayout, et le limite à une zone indiquée par Left, Top, Width, Height. Le style chargé dans le masque ou celui précédemment chargé dans la mise en page personnalisée avec LoadStyle s’appliquent au reste de la diapositive.

Les paramètres Left, Top, Width, Height sont indiqués sous la forme de points PowerPoint. Left et Top indiquent respectivement la distance des bords gauche et supérieur de la zone depuis les bords gauche et supérieur de la mise en page personnalisée. En général, vous devez les définir sous forme de fractions de la hauteur et de la largeur totales de la diapositive. Par exemple, pour une région qui couvre les deux tiers droits d’une mise en page personnalisée, vous devriez configurer

Left = CustomLayout.Width / 3
Top = 0
Width = CustomLayout.Width * 2 / 3
Height = CustomLayout.Height

Vous pouvez également ajouter manuellement une forme à une diapositive ou à une mise en page personnalisée, interroger ses propriétés Left, Top, Width, Height par programmation et utiliser les valeurs avec LoadStyleForRegion pour limiter le style à la même région couverte par la forme.

think-cell prend en charge un maximum de deux styles par mise en page personnalisée. L’un est défini avec LoadStyle et couvre tout ce qui n’est pas limité à une région, l’autre est défini avec LoadStyleForRegion.

F.2.2.2.3 Exemples
VBA

Pour utiliser ce modèle, ajoutez le code suivant à un module dans PowerPoint (voir Visual Basic for Applications pour plus de détails).

Option Explicit
 
Sub LoadStyleForRegion_Sample() 

    ' Get the think-cell add-in object 
    Dim tcPpAddIn As Object 
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object 

    Dim layout As CustomLayout
    Set layout = Application.ActivePresentation.Designs(1).SlideMaster.CustomLayouts(2)

    ' Define a region covering the left half of the custom layout
    Dim left, top, width, height As Single
    left = 0
    top = 0
    width = layout.Width / 2
    height = layout.Height

    Dim style As String
    style = "C:\some\path\styles\style.xml"

    Call tcPpAddIn.LoadStyleForRegion(layout, style, left, top, width, height)
End Sub

F.2.2.3 Obtenir un nom de style

Pris en charge dans les versions think-cell 13 et ultérieures.

F.2.2.3.1 Signature
VBA
tcPpAddIn.GetStyleName( _ 
    CustomLayoutOrMaster As Object _ 
) As String
C#
string tcPpAddIn.GetStyleName(
    object CustomLayoutOrMaster
);
F.2.2.3.2 Description

Cette fonction renvoie le nom du style chargé dans la CustomLayout ou le Master CustomLayoutOrMaster. Il s’agit du même nom que celui spécifié dans l’attribut name de l’élément <style> du fichier de style correspondant (voir style).

Elle renvoie une chaîne vide si aucun style n’est chargé dans CustomLayoutOrMaster. Veuillez noter qu’un master possède toujours un style chargé lorsque think-cell est actif et que le nom d’un style ne peut être vide.

Si un nom est renvoyé pour une CustomLayout, c’est le nom du style qui est alors chargé avec Charger des styles, et non celui chargé avec Charger le style pour une zone, le cas échéant.

F.2.2.3.3 Exemples
VBA

Pour utiliser ce modèle, ajoutez le code suivant à un module dans PowerPoint (voir Visual Basic for Applications pour plus de détails).

Option Explicit

Sub GetStyleName_Sample()

    ' Get the think-cell add-in object 
    Dim tcPpAddIn As Object
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object
    
    ' Get the Master of the first slide of the current presentation
    Dim master As Master
    Set master = Application.ActivePresentation.Slides(1).Master
    
    ' Print the name of the style loaded to the debug console
    Dim name As String
    name = tcPpAddIn.GetStyleName(master)
    Debug.Print name
End Sub

F.2.2.4 Supprimer des styles

F.2.2.4.1 Signature
VBA
tcPpAddIn.RemoveStyles( _ 
    CustomLayout As PowerPoint.CustomLayout _ 
)
C#
void tcPpAddIn.RemoveStyles(
    PowerPoint.CustomLayout CustomLayout
);
F.2.2.4.2 Description

Cette fonction supprime tous les styles de la mise en page personnalisée CustomLayout. Ensuite, le style chargé dans le masque s’applique. Il peut potentiellement y avoir un style chargé dans la mise en page personnalisée et un autre style limité à une région spécifique de la mise en page personnalisée. Comme RemoveStyles supprime tous les styles, les deux seront supprimés. Le style chargé dans un masque ne peut pas être supprimé, car il doit toujours y avoir un style valide associé à un masque. Il peut être remplacé par un autre fichier de style.

F.2.2.4.3 Exemples
VBA

Pour utiliser ce modèle, ajoutez le code suivant à un module dans PowerPoint (voir Visual Basic for Applications pour plus de détails).

Option Explicit
 
Sub RemoveStyles_Sample() 

    ' Get the think-cell add-in object 
    Dim tcPpAddIn As Object 
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object 

    Dim layout As CustomLayout
    Set layout = Application.ActivePresentation.Designs(1).SlideMaster.CustomLayouts(2)

    Call tcPpAddIn.RemoveStyles(layout)
End Sub

F.2.3 Importer des graphiques Mekko Graphics

Les fonctions abordées dans cette section peuvent être utilisées pour importer et inspecter via un programme des graphiques créés avec Mekko Graphics dans think-cell. ImportMekkoGraphicsCharts remplace les graphiques Mekko Graphics avec des graphiques think-cell équivalents. GetMekkoGraphicsXML extrait la définition XML d’un graphique Mekko Graphics.

Les fonctions abordées dans cette section sont des méthodes du complément think-cell dans PowerPoint.

F.2.3.1 Importer des graphiques Mekko Graphics

Pris en charge dans les versions think-cell 13 et ultérieures.

F.2.3.1.1 Signature
VBA
tcPpAddIn.ImportMekkoGraphicsCharts ( _
    ashp As PowerPoint.Shape() _
) As PowerPoint.Slide
C#
PowerPoint.Slide tcPpAddIn.ImportMekkoGraphicsCharts(
    PowerPoint.Shape[] ashp
);
F.2.3.1.2 Description

Cette fonction remplace tous les graphiques Mekko Graphics de l’ensemble des Shape qui y sont transmises avec un graphique think-cell équivalent. Les formes doivent toutes se trouver sur la même diapositive. Avant de modifier la diapositive, la fonction créera une copie de la diapositive non-modifiée et l’insérera directement après la version modifiée.

La fonction renvoie une référence à cette copie, si celle-ci a été créée.

Elle renvoie Nothing/null, si la présentation n’a pas été modifiée dans le cas où, par exemple, l’ensemble ne contenait pas de graphiques Mekko Graphics.

F.2.3.1.3 Exemples
VBA

Pour utiliser ce modèle, ajoutez-le à un module dans PowerPoint (voir Visual Basic for Applications pour plus de détails).

L’exécution de ImportAll dans une présentation affectera toutes les diapositives de la présentation et remplacera tous les graphiques Mekko Graphics visibles par des graphiques think-celle équivalents, en créant une copie de chacune des diapositives en contenant en avant de la modifier.

Option Explicit

Sub ImportAll()

    ' Get reference to think-cell Object

    Dim tcPpAddIn As Object
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object

    ' Iterate over copy of original Slides to avoid
    ' iterating over copies inserted by ImportMekkoGraphicsCharts again

    Dim SlidesCopy As New Collection
    Dim Slide As PowerPoint.Slide
    For Each Slide In ActivePresentation.Slides
        SlidesCopy.Add Slide
    Next Slide
    
    For Each Slide In SlidesCopy
    
        ' Construct Array containing only visible shapes on slide
        
        Dim visibleShapes() As PowerPoint.Shape
        ReDim visibleShapes(1 To Slide.Shapes.Count)
        Dim shapeIndex As Long
        For shapeIndex = 1 To Slide.Shapes.Count
            If Slide.Shapes(shapeIndex).Visible Then
                Set visibleShapes(shapeIndex) = Slide.Shapes(shapeIndex)
            End If
        Next shapeIndex
        
        ' Pass Array to ImportMekkoGraphics and store return value
        
        Dim CopySlide As PowerPoint.Slide
        Set CopySlide = tcPpAddIn.ImportMekkoGraphicsCharts(visibleShapes)
        
        ' If Slide was modified...
        If Not CopySlide Is Nothing Then
        ' ... do things with copy of unmodified slide
        End If
    Next Slide
End Sub
C#

Pour utiliser ce modèle, ajoutez cette méthode à la classe ThisAddIn du modèle de projet C# Complément VSTO PowerPoint (voir C# et Développement de compléments pour plus de détails).

private void ImportAll(PowerPoint.Presentation presentation)
    {
        var tcPpAddIn = presentation.Application.COMAddIns.Item("thinkcell.addin").Object;
        foreach (PowerPoint.Slide slide in presentation.Slides.Cast<PowerPoint.Slide>().ToList())
        {
            PowerPoint.Slide slideCopy = tcPpAddIn.ImportMekkoGraphicsCharts(
                slide.Shapes.Cast<PowerPoint.Shape>().ToArray()
            );
        }
    }

Ajoutez la ligne suivante à la méthode ThisAddIn_Startup pour exécuter ImportAll dans chaque présentation ouverte :

Application.PresentationOpen += new PowerPoint.EApplication_PresentationOpenEventHandler(ImportAll);

F.2.3.2 Obtenir Mekko Graphics XML

Pris en charge dans les versions think-cell 13 et ultérieures.

F.2.3.2.1 Signature
VBA
tcPpAddIn.GetMekkoGraphicsXML ( _
    shp As PowerPoint.Shape _
) As String
C#
string tcPpAddIn.GetMekkoGraphicsXML(
    PowerPoint.Shape shp
);
F.2.3.2.2 Description

Cette fonction renvoie le XML du graphique Mekko Graphics dans shp en tant que chaîne. Elle ne modifie pas les formes transmises.

Si shp n’est pas un graphique Mekko Graphics, cela entraîne une erreur E_INVALIDARG (0x80070057).

F.2.3.2.3 Exemples
VBA

Pour utiliser ce modèle, ajoutez le code suivant à un module dans PowerPoint (voir Visual Basic for Applications pour plus de détails).

Option Explicit

Sub GetMekkoGraphicsXMLOfAllShapes()

    ' Get reference to think-cell Object

    Dim tcPpAddIn As Object
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object

    ' Go through the slides in the presentation and
    ' output the XML of each Mekko Graphics chart on the slide
    ' to the debug console

    Dim slide As PowerPoint.slide
    For Each slide In Application.ActivePresentation.Slides
        Dim shape As PowerPoint.shape
        For Each shape In slide.Shapes
            Debug.Print tcPpAddIn.GetMekkoGraphicsXML(shape)
        Next shape
    Next slide
End Sub
C#

Pour utiliser ce modèle, remplacez le code dans Program.cs d’un modèle de projet Console App avec celui-ci.

Cela nécessite une référence vers la bibliothèque d’objets Microsoft PowerPoint 16.0 et la bibliothèque d’objets Microsoft Office 16.0 (voir C# pour plus de détails).

L’exécution de l’application affectera la présentation dans C:\Samples\GetMekkoGraphicsXML\presentation.pptx et imprimera le XML des graphiques Mekko Graphics contenus vers la console.

using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Office = Microsoft.Office.Core;

namespace Sample
{
    class Program
    {
        static void Main()
        {
            var ppapp = new PowerPoint.Application();
            var presentation = ppapp.Presentations.Open(
                "C:\\Samples\\GetMekkoGraphicsXML\\presentation.pptx",
                /*ReadOnly*/Office.MsoTriState.msoTrue,
                /*Untitled*/Office.MsoTriState.msoTrue,
                /*WithWindow*/Office.MsoTriState.msoFalse
            );

            var tcPpAddIn = ppapp.COMAddIns.Item("thinkcell.addin").Object;
            foreach (PowerPoint.Slide slide in presentation.Slides)
            {
                foreach (PowerPoint.Shape shape in slide.Shapes)
                {
                    string xml = tcPpAddIn.GetMekkoGraphicsXML(shape);
                    Console.WriteLine(xml);
                }
            }

            presentation.Close();
            ppapp.Quit();
        }
    }
}

F.2.4 Divers

Les fonctions abordées dans cette section sont des méthodes du complément think-cell dans PowerPoint.

F.2.4.1 Commencer l’insertion de tableaux

Pris en charge dans les versions think-cell 13 et ultérieures.

F.2.4.1.1 Signature
VBA
tcPpAddIn.StartTableInsertion()
C#
void tcPpAddIn.StartTableInsertion();
F.2.4.1.2 Description

Faire appel à cette fonction a le même effet que de cliquer sur Tableau dans le menu Éléments dans PowerPoint.

Partager