F. API-Dokumentation

think-cell ermöglicht Ihnen, einige Funktionen über eine API programmatisch zu steuern. Hier finden Sie einen Überblick über alle verfügbaren API-Funktionen und allgemeine Hinweise, wie Sie Ihre Entwicklungsumgebung einrichten, um Makros, Add-ins oder eigenständige Programme zu schreiben, die diese aufrufen.

F.1
Erste Schritte
F.2
API-Referenz

F.1 Erste Schritte

Die API von think-cell ist in das Office Automation Model integriert, sodass sie mit jeder Programmiersprache für Office (z. B. Visual Basic for Applications (VBA) oder C#) aufgerufen werden kann.

Der Einstiegspunkt in think-cell ist das think-cell Add-In-Objekt. Dieses kann über die Application.COMAddIns-Sammlung aufgerufen werden. Aufrufe in think-cell sind immer spät gebunden, daher muss keine Typenbibliothek oder Referenz hinzugefügt werden. Eine Erklärung hierzu finden Sie in der Microsoft Knowledge Base unter:

Frühes und spätes Binden bei Automatisierung verwenden

Einige API-Funktionen sind Methoden des think-cell Add-in-Objekts in Microsoft PowerPoint, andere gehören zum think-cell Add-in-Objekt in Excel. Wir werden tcPpAddIn für Referenzen zum PowerPoint Add-in und tcXlAddIn für Referenzen zum Excel Add-in verwenden.

F.1.1 Visual Basic for Applications

Um Makros mithilfe von Visual Basic for Applications (VBA) zu schreiben, verwenden Sie die Entwicklungsumgebung, die in die Office Host-Anwendung integriert ist. Diese kann durch Drücken von Alt+F11 aufgerufen werden. Die Definition eines Makros ist für gewöhnlich in einem Modul enthalten, das Sie über das EinfügenModul hinzufügen können. Sie können alle Makros, die für ein bestimmtes Dokument definiert wurden, aufrufen, indem Sie Alt+F8 drücken.

Um anzuzeigen, dass Methodenaufrufe zum think-cell Add-In spät gebunden sind, müssen Sie die Variable, die die Referenz dazu enthält, wie folgt deklarieren: Object

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

Die Typenbibliothek für die Office Host-Anwendung wird immer standardmäßig referenziert. Wenn Sie das Objektmodell einer anderen Office Anwendung aufrufen müssen, müssen Sie dessen Typenbibliothek als Referenz hinzufügen.

Wenn Sie zum Beispiel ein Makro in PowerPoint einsetzen wollen, um Daten in einer Excel-Tabelle zu bearbeiten, bevor Sie ein think-cell Diagramm daraus aktualisieren, müssen Sie das Microsoft Excel 16.0 Objektverzeichnis manuell über den Dialog ExtrasReferenzen in der VBA-Entwicklungsumgebung hinzufügen.

Hinweis: 16.0 ist die Versionsnummer von Office 2016 und späteren Versionen. Für Office 2010 oder 2013 müssen Sie die Objektverzeichnisse 14.0 oder 15.0 verwenden. Wenn Sie mehrere Versionen von Office installiert haben, zeigt der Dialog Referenzen nur die Objektverzeichnisse der neuesten installierten Version an. Wir gehen im Folgenden davon aus, dass Sie Office 2016 oder eine neuere Version verwenden.

Durch Verwenden von Application.COMAddIns("thinkcell.addin").Object erhalten Sie immer das think-cell Add-In-Objekt der aktuellen Office Host-Anwendung, d. h. tcPpAddIn oder tcXlAddIn, je nachdem, ob Sie es in PowerPoint oder Excel verwenden. Um eine Referenz zum Add-In-Objet in der anderen Office Anwendung zu erhalten und die exponierten API-Funktionen aufzurufen, müssen Sie es durch eine angemessene Anwendungsinstanz beschaffen.

Um zum Beispiel eine Referenz zu tcXlAddIn von PowerPoint zu erhalten:

Dim xlapp As Object
Set xlapp = New Excel.Application

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

Bitte beachten Sie, dass das Excel Objektverzeichnis als Referenz hinzugefügt werden muss.

Wir empfehlen, die Option Explicit Aussage zu verwenden, die die explizite Deklarierung aller Variablen erzwingt, wodurch häufige Programmierfehler vermieden und Vorschläge von IntelliSense verbessert werden. Sie können sie automatisch zu allen Modulen hinzufügen lassen, indem Sie ExtrasOptionenCodeeinstellungenVariablendeklaration verlangen. Sie ist in all unseren Codebeispielen enthalten.

F.1.2 C#

Sie können die think-cell API von C# beim Entwickeln von Ad-Ins verwenden und Codeerweiterungen, die in einer Office Host-Anwendung ausgeführt werden, dokumentieren. Gleiches gilt für das Entwickeln alleinstehender Anwendungen.

Wir gehen im Folgenden davon aus, dass Sie Visual Studio 2017 oder eine neuere Lösung verwenden, um Office Lösungen in C# zu entwickeln. Um nächsten Abschnitt finden Sie spezifischere Set-up-Anweisungen für die Add-In-Entwicklung. Wir geben bei jedem unserer Codebeispiele an, welche Visual Studio Projektvorlage verwendet werden soll.

Um spät gebundene Methodenaufrufe zum think-cell Add-In-Objekt zu tätigen, deklarieren Sie die Variable, die die Referenz zum think-cell Add-In-Objekt enthält, als dynamic. Dies ist auch der vom Compiler gefolgerte Typ, wenn die Referenz als var deklariert wird. Daher können Sie einfach Folgendes schreiben:

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

Hier ist ppapp eine Referenz auf ein PowerPoint Application Objekt, in dem think-cell geladen wird.

Um das Objektmodell einer Office Anwendung aufzurufen, müssen Sie entweder seine Typenbibliothek oder seine primäre Interop-Assembly (PIA) als Referenz zu Ihrem Projekt hinzufügen. Wir empfehlen, wenn möglich die Typenbibliothek hinzuzufügen, da Visual Studio automatisch eine Referenz zur entsprechenden PIA hinzufügt, falls verfügbar, oder eine Interop-Assembly aus der Typenbibliothek erstellt, wenn es keine gibt (siehe hier ).

Um zum Beispiel die Referenz zum think-cell Add-In-Objekt wie oben zu erhalten, fügen Sie das Microsoft PowerPoint 16.0 Objektverzeichnis aus der Registerkarte COMTypenbibliotheken des Dialogs Referenzmanager hinzu. Je nach Projekttyp wird der Dialog entweder durch Rechtsklick auf Referenzen oder Abhängigkeiten im Solution Explorer und Auswahl von (COM) Referenz Hinzufügen aufgerufen.

Hinweis: 16.0 ist die Versionsnummer von Office 2016 und späteren Versionen. Durch Nutzen der Option Interop-Typen einbetten, die standardmäßig für eine Referenz zur COM-Typenbibliothek aktiviert wird, wird eine mit dieser Referenz zusammengestellte Anwendung rückwärts (und vorwärts) mit anderen Office Versionen kompatibel sein, solange alle verwendeten Schnittstellen in ihrem Objektmodell existieren. Weitere Informationen finden Sie hier.

Die API-Funktionen von think-cell geben Fehler beim Verwenden von COM HRESULTs an. Einige davon werden automatisch in entsprechenden -NET Ausnahmeklassen dargestellt. Siehe Anleitung: HRESULTs und Ausnahmen darstellen .

F.1.2.1 Add-in-Entwicklung

Um Add-Ins für Office oder Codeerweiterungen für Office Dokumente zu entwickeln, verwenden Sie das PowerPoint/Excel VSTO Add-In und die Excel VSTO Template/Workbook Projektvorlagen. Diese gehören zu den Office Developer Tools für Visual Studio, die in dieser Standardkonfigurierung installiert sind. Sollten diese Tools und Vorlagen in Ihrer Visual Studio Installation nicht verfügbar sein, können Sie sie beispielsweise hinzufügen, indem Sie zu EinstellungenAppsVisual Studio 2022ModifizierenSonstige Toolsets gehen, Office/SharePoint Entwicklung ankreuzen und Modifizieren anklicken. Siehe auch Dokumentation von Microsoft hier und hier.

Die PIA für die Office Host-Anwendung der ausgewählten Vorlage wird immer standardmäßig geladen. Wenn Sie auf das Objektmodell einer anderen Office Anwendung zugreifen müssen, müssen Sie wie oben erklärt die Typenbibliothek als Referenz hinzufügen.

Hinweis: Die API von think-cell kann nicht von Office Web Add-Ins aus verwendet werden — leider jetzt nur noch „Office Add-ins“ von Microsoft genannt — da sie nicht mit dem Objektmodell der Office Anwendung direkt und insbesondere nicht mit COM Add-Ins wie think-cell interagieren können.

F.2 API-Referenz

F.2.1
Elemente und Präsentationsvorlagen mit Excel-Daten aktualisieren
F.2.2
Steuern von Formatvorlagen
F.2.3
Diagramme von Mekko Graphics importieren
F.2.4
Verschiedenes

F.2.1Elemente und Präsentationsvorlagen mit Excel-Daten aktualisieren

Die Funktionen in diesem Abschnitt können verwendet werden, um think-cell Elemente mit Daten aus Excel programmatisch zu aktualisieren, für gewöhnlich Platzhalter in einer Präsentationsvorlage. UpdateChart aktualisiert think-cell Elemente, die durch einen Namen angegeben sind, der ihnen in der Vorlage zugewiesen wurde, mit Daten aus einem Excel-Bereich, der als Argument übergeben wurde. Siehe auch Einführung in die Automatisierung dazu, wie man die Vorlage vorbereitet.

PresentationFromTemplate instantiiert eine Präsentationsvorlage mit Daten aus einer verknüpften Excel Arbeitsmappe. Siehe auch Excel-Datenlinks dazu, wie man Excel-Links erstellt.

Die Funktionen in diesem Abschnitt sind Methoden des think-cell Add-In in Excel.

F.2.1.1 Diagramm aktualisieren

F.2.1.1.1 Signatur
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 Beschreibung:

Diese Funktion aktualisiert alle Elemente in target mit dem Namen strName mit den Daten aus rgData. Damit die Daten für Diagramme korrekt interpretiert werden, muss der Bereich rgData seinem Standard-Datenblatt-Layout oder seiner transponierten Version entsprechen, siehe hierzu auch Erstellen eines Diagramms aus Excel und Anpassen des Datenlayouts. Ob die standardmäßige oder transponierte Version verwendet werden soll, wird von der Einstellung bTransposed zu false oder true angegeben. Für Elemente, bei denen es sich nicht um Diagramme handelt, z. B. Tabellen, wird der Wert bTransposed ignoriert.

target muss ein Presentation oder SlideRange, oder ein einzelnes Slide, Master oder CustomLayout sein.

Beim Namen strName wird nicht zwischen Groß- und Kleinschreibung unterschieden. Er muss zuvor mithilfe der Eigenschaft UpdateChart-Name in PowerPoint zugewiesen worden sein, wie beschrieben in Einführung in die Automatisierung.

Um sicherzustellen, dass die richtigen Elemente bestimmt werden, stellen Sie sicher, dass sie die einzigen sind, bei denen der UpdateChart-Name auf strName im als pres übergebenen Objekt eingestellt ist.

Ist das Element mit einem Excel-Datenbereich verknüpft, wenn die Funktion aufgerufen wird, wird die Verknüpfung getrennt. Anschließend besteht keine Verknüpfung zwischen dem Element und dem Excel-Bereich mehr.

F.2.1.1.3 Beispiele

Um diese Beispiele zu verwenden, bereiten Sie wie in Einführung in die Automatisierung beschrieben eine Präsentation vor und speichern Sie sie als C:\Samples\UpdateChart\template.pptx.

VBA

Um dieses Beispiel zu verwenden, fügen Sie es zu einem Modul in einer Excel-Arbeitsmappe hinzu.

Dies erfordert eine Referenz zum Microsoft PowerPoint 16.0 Objektverzeichnis (siehe Visual Basic for Applications für weitere Informationen).

Das Ausführen von UpdateChart_Sample in einer Arbeitsmappe aktualisiert das Diagramm in der Präsentationsvorlage mit den in Bereich A1:D5 enthaltenen Daten der ersten Tabelle.

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#

Um dieses Beispiel zu verwenden, ersetzen Sie den Code in Program.cs der C# Console App Projektvorlage damit.

Dies erfordert eine Referenz zum Microsoft PowerPoint 16.0 Objektverzeichnis, dem Microsoft Excel 16.0 Objektverzeichnis und dem Microsoft Office 16.0 Objektverzeichnis (siehe C# für weitere Informationen).

Das Ausführen der resultierenden Anwendung aktualisiert die Tabelle in der Präsentationsvorlage, sodass sie eine einzelne Serie namens „Serie 1“ mit den Werten 1, 2, 3 enthält. Das Ergebnis wird als template_updated.pptx gespeichert.

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äsentationAusVorlage

F.2.1.2.1 Signatur
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 Beschreibung:

Diese Funktion nutzt die Datenverknüpfungen zwischen der Excel-Arbeitsmappe wb und der Vorlage mit dem Dateinamen strTemplate, um die Vorlage zu instantiieren, indem die verknüpften Elemente mit den Daten aus den damit verknüpften Bereichen aktualisiert werden. Das Ergebnis ist eine neue Präsentation innerhalb der PowerPoint-Instanz ppapp.

strTemplate kann entweder ein vollständiger oder relativer Pfadname sein. Der relative Pfadname ist relativ zum Ort der Excel-Arbeitsmappendatei wb.

Alle Elemente in strTemplate, die mit der Excel-Arbeitsmappe wb verknüpft sind, werden aktualisiert (egal ob sie auf automatische Aktualisierung eingestellt sind oder nicht). Anschließend werden in der Präsentation ihre Datenverknüpfungen getrennt, um weitere Veränderungen dieser Elemente zu verhindern.

Elemente in strTemplate, die mit anderen Excel-Arbeitsmappen als wb verknüpft sind, bleiben unverändert und verknüpft. Es ist also möglich, Verknüpfungen mehrerer Excel-Arbeitsmappen zu aktualisieren, indem man das Ergebnis dieser Funktion als neue Vorlage speichert und die Funktion dann mit der nächsten Arbeitsmappe aufruft.

Falls Sie die Farben von Diagrammsegmenten oder die Formatierung von Tabellenzellen mit der Excel-Verknüpfung steuern möchten, können Sie für das Farbschema die Option Datenblatt-Füllung überlagern einstellen (siehe Farbschema) oder die Option Datenblatt verwenden… (siehe Formatieren einer Tabelle) verwenden. Um ebenso das Zahlenformat bei der Excel-Verknüpfung zu steuern, setzen Sie es auf Excel-Format verwenden (siehe Zahlenformat).

Stellen Sie sicher, dass Sie die entsprechenden Formatierungsoptionen und das Zahlenformat der entsprechenden Zellen in Excel eingestellt haben, bevor Sie PresentationFromTemplate aufrufen.

F.2.1.2.3 Beispiele

Um diese Beispiele zu verwenden, erstellen Sie zunächst eine Präsentation mit einem gestapelten Diagramm, das mit Bereich G1:K4 der ersten Tabelle in einer Excel-Arbeitsmappe verknüpft ist, wie in Erstellen eines Diagramms aus Excel beschrieben. Speichern Sie die Präsentation als C:\Samples\PresentationFromTemplate\template.pptx und die Arbeitsmappe als data.xlsx im gleichen Ordner.

VBA

Um dieses Beispiel zu verwenden, fügen Sie es zu einem Modul in der Excel-Arbeitsmappe data.xlsx wie oben beschrieben hinzu.

Dies erfordert eine Referenz zum Microsoft PowerPoint 16.0 Objektverzeichnis (siehe Visual Basic for Applications für weitere Informationen).

Das Ausführen von PresentationFromTemplate_Sample ändert den Wert in Zelle Sheet1!H3, die mit dem ersten Wert der ersten Serie der Tabelle aus template.pptx verknüpft ist, von i=1 auf 10, erstellt eine neue Präsentation mit dem Diagramm in der aktualisierten Vorlage mit diesem Wert, das nicht mehr mit der Arbeitsmappe verknüpft ist, und speichert diese als output_i.pptx im gleichen Verzeichnis wie die Vorlage.

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#

Um dieses Beispiel zu verwenden, ersetzen Sie den Code in Program.cs der C# Console App Projektvorlage damit.

Dies erfordert eine Referenz zum Microsoft PowerPoint 16.0 Objektverzeichnis, dem Microsoft Excel 16.0 Objektverzeichnis und dem Microsoft Office 16.0 Objektverzeichnis (siehe C# für weitere Informationen).

Das Ausführen der Anwendung öffnet sichtbar Excel, lädt die Arbeitsmappe data.xlsx, ändert den Wert in Zelle H3, die mit dem ersten Wert der ersten Serie der Tabelle aus template.pptx verknüpft ist, von i=1 auf 10, erstellt eine neue Präsentation mit dem Diagramm in der aktualisierten Vorlage mit diesem Wert, das nicht mehr mit der Arbeitsmappe verknüpft ist, und speichert diese als output_i.pptx im gleichen Verzeichnis wie die Vorlage.

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 Steuern von Formatvorlagen

Die Funktionen in diesem Abschnitt können verwendet werden, um think-cell Formatvorlagen programmatisch zu laden, zu untersuchen und zu entfernen. LoadStyle lädt eine Formatvorlage aus einer Stildefinition in eine Masterfolie oder eine einzelne individuelle Vorlage. LoadStyleForRegion lädt eine Formatvorlage aus einer Stildefinition in einen spezifischen Bereich einer individuellen Vorlage. GetStyleName gibt den Namen der Formatvorlage, die in eine Masterfolie oder eine individuelle Vorlage geladen wurde, wieder. RemoveStyles entfernt alle Formatvorlagen aus einer individuellen Vorlage.

Weitere Informationen, wie Sie Formatvorlagen erstellen und bearbeiten, finden Sie Erstellen eines think-cell Stils und Format von Stildefinitionen. Weitere Informationen, wie Sie diese laden, finden Sie unter Laden von Stildefinitionen.

Die Funktionen in diesem Abschnitt sind Methoden des think-cell Add-In PowerPoint.

F.2.2.1 Formatvorlage laden

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

Diese Funktion lädt die Formatvorlagendatei in FileName in eine Vorlage oder ein benutzerdefiniertes Layout, das über den Parameter CustomLayoutOrMaster angegeben wird.

CustomLayoutOrMaster muss ein CustomLayout oder Master sein.

Wenn es bei einem benutzerdefinierten Layout angewendet wird, bei dem eine regionale Formatvorlage eingestellt wurde (siehe Formatvorlage für Region laden), wird die regionale Formatvorlage entfernt. Das bedeutet, dass Sie die Formatvorlage, die beim Rest der Folie angewendet werden soll, mit dieser Funktion laden müssen, bevor Sie eine auf eine Region beschränkte Formatvorlage laden.

Wenn es bei einer Vorlage angewendet wird, werden sämtliche Formatvorlagen aus dieser Vorlage, die in benutzerdefinierten Layouts geladen wurden, regional und unbeschränkt, entfernt. Das bedeutet, dass Sie die Formatvorlage, die bei benutzerdefinierten Layouts ohne spezifische Formatvorlage angewendet werden soll, in die Vorlage laden müssen, bevor Sie mit dieser Funktion Formatvorlage laden, die auf ein bestimmtes benutzerdefiniertes Layout angewendet werden soll.

F.2.2.1.3 Beispiele
VBA

Um dieses Beispiel zu verwenden, fügen Sie den folgenden Code zu einem Modul in PowerPoint hinzu (siehe Visual Basic for Applications für weitere Informationen).

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 Formatvorlage für Region laden

F.2.2.2.1 Signatur
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 Beschreibung:

Diese Funktion lädt die Formatvorlagendatei in FileName in das benutzerdefinierte Layout CustomLayout und beschränkt sie auf eine Region, die von Left, Top, Width, Height angegeben wird. Auf dem Rest der Folie wird die Formatvorlage übernommen, die in die Vorlage geladen wurde, oder die Formatvorlage, die zuvor mit LoadStyle in das benutzerdefinierte Layout geladen wurde.

Die Parameter Left, Top, Width, Height werden in PowerPoint Punkten angegeben. Left und Top geben die Entfernung vom linken und oberen Rand der Region von den linken und oberen Rändern des benutzerdefinierten Layouts an. In der Regel werden Sie sie als Bruchteile der gesamten Höhe und Breite der Folie setzen. Zum Beispiel würde für eine Region, die die rechten zwei Drittel eines benutzerdefinierten Layouts abdeckt,

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

Sie können auch manuell eine Form zur Folie oder zum benutzerdefinierten Layout hinzufügen, seine Eigenschaften Left, Top, Width, Height programmgesteuert abfragen und die Werte mit LoadStyleForRegion verwenden, um die Formatvorlage auf dieselbe Region zu beschränken, die von der Form abgedeckt wird.

think-cell unterstützt maximal zwei Formatvorlagen pro benutzerdefiniertem Layout. Eine wird mit LoadStyle gesetzt und deckt alles ab, was nicht auf eine Region beschränkt ist, die andere wird mit LoadStyleForRegiongesetzt.

F.2.2.2.3 Beispiele
VBA

Um dieses Beispiel zu verwenden, fügen Sie den folgenden Code zu einem Modul in PowerPoint hinzu (siehe Visual Basic for Applications für weitere Informationen).

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 Namen der Formatvorlage erhalten

Unterstützt in think-cell 13 und späteren Versionen

F.2.2.3.1 Signatur
VBA
tcPpAddIn.GetStyleName( _ 
    CustomLayoutOrMaster As Object _ 
) As String
C#
string tcPpAddIn.GetStyleName(
    object CustomLayoutOrMaster
);
F.2.2.3.2 Beschreibung:

Diese Funktion gibt den Namen der Formatvorlage wieder, die in das CustomLayout oder die Master CustomLayoutOrMaster geladen wurde. Hierbei handelt es sich um den gleichen Namen, der im name Attribut des <style> Elements der zugehörigen Formatvorlagendatei angegeben ist (siehe Stil).

Es wird als leerer String wiedergegeben, wenn keine Formatvorlage in das CustomLayoutOrMaster geladen wurde. Bitte beachten Sie, dass bei einer Vorlage immer eine Formatvorlage geladen wurde, wenn think-cell aktiviert wurde und dass der Name der Formatvorlage nicht leer sein darf.

Wenn ein Name für ein CustomLayout wiedergegeben wird, handelt es sich um den Namen der Formatvorlage, der mit Formatvorlage laden hineingeladen wurde, und nicht um den mit Formatvorlage für Region laden geladenen, falls vorhanden.

F.2.2.3.3 Beispiele
VBA

Um dieses Beispiel zu verwenden, fügen Sie den folgenden Code zu einem Modul in PowerPoint hinzu (siehe Visual Basic for Applications für weitere Informationen).

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 Formatvorlagen entfernen

F.2.2.4.1 Signatur
VBA
tcPpAddIn.RemoveStyles( _ 
    CustomLayout As PowerPoint.CustomLayout _ 
)
C#
void tcPpAddIn.RemoveStyles(
    PowerPoint.CustomLayout CustomLayout
);
F.2.2.4.2 Beschreibung:

Diese Funktion entfernt alle Formatvorlagen aus dem benutzerdefinierten Layout CustomLayout. Danach gilt die in der Vorlage geladene Formatvorlage. Möglicherweise kann es eine Formatvorlage geben, die in das benutzerdefinierte Layout geladen wird, und eine andere Formatvorlage, die auf eine bestimmte Region des benutzerdefinierten Layouts beschränkt ist. Da RemoveStyles alle Formatvorlagen entfernt, werden beide entfernt. Die in einer Vorlage geladene Formatvorlage kann nicht entfernt werden, da immer eine gültige Formatvorlage mit einer Vorlage verknüpft sein muss. Sie kann mit einer anderen Formatvorlagendatei überschrieben werden.

F.2.2.4.3 Beispiele
VBA

Um dieses Beispiel zu verwenden, fügen Sie den folgenden Code zu einem Modul in PowerPoint hinzu (siehe Visual Basic for Applications für weitere Informationen).

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 Diagramme von Mekko Graphics importieren

Die Funktionen in diesem Abschnitt können verwendet werden, um mit Mekko Graphics erstellte Diagramme programmatisch in think-cell zu importieren und zu untersuchen. ImportMekkoGraphicsCharts ersetzt Mekko Graphics Diagramme durch äquivalente think-cell Diagramme. GetMekkoGraphicsXML extrahiert die XML-Definition eines Mekko Graphics Diagramms.

Die Funktionen in diesem Abschnitt sind Methoden des think-cell Add-In PowerPoint.

F.2.3.1 Diagramme von Mekko Graphics importieren

Unterstützt in think-cell 13 und späteren Versionen

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

Diese Funktion ersetzt alle Mekko Graphics Diagramme im Array aus den von Shape übergebenen mit äquivalenten think-cell Diagrammen. Die Formen müssen alle auf derselben Folie sein. Vor dem Modifizieren der Folie macht die Funktion eine Kopie der nicht modifizierten Folie und fügt sie direkt hinter der modifizierten Version ein.

Die Funktion gibt eine Referenz zu dieser Kopie nach deren Erstellung wieder.

Sie gibt Nothing/null wieder, wenn die Präsentation nicht modifiziert wurde, zum Beispiel, weil das Array keine Mekko Graphics Diagramme enthalten hat.

F.2.3.1.3 Beispiele
VBA

Um dieses Beispiel zu verwenden, fügen Sie es zu einem Modul in PowerPoint hinzu (siehe Visual Basic for Applications für weitere Informationen).

Das Ausführen von ImportAll in einer Präsentation geht die Folien in der Präsentation durch und ersetzt alle sichtbaren Mekko Graphics Diagramme mit äquivalenten think-cell Diagrammen, wobei von jeder Folie, die eines enthält, eine Kopie gemacht wird, bevor sie modifiziert wird.

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#

Um dieses Beispiel zu verwenden, fügen Sie diese Methode zur ThisAddIn Klasse der C# PowerPoint VSTO Add-In Projektvorlage hinzu (siehe C# und Add-in-Entwicklung für weitere Informationen).

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

Fügen Sie die folgende Zeile zur ThisAddIn_Startup Methode hinzu, um ImportAll bei jeder geöffneten Präsentation ausführen zu können:

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

F.2.3.2 Mekko Graphics XML holen

Unterstützt in think-cell 13 und späteren Versionen

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

Diese Funktion gibt das XML der Mekko Graphics Diagramme in shp als String wieder. Es modifiziert die übergebene Form nicht.

Wenn shp kein Diagramm von Mekko Graphics ist, wird ein E_INVALIDARG (0x80070057) Fehler gemeldet.

F.2.3.2.3 Beispiele
VBA

Um dieses Beispiel zu verwenden, fügen Sie den folgenden Code zu einem Modul in PowerPoint hinzu (siehe Visual Basic for Applications für weitere Informationen).

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#

Um dieses Beispiel zu verwenden, ersetzen Sie den Code in Program.cs einer Console App damit.

Dies erfordert eine Referenz zum Microsoft PowerPoint 16.0 Objektverzeichnis und zum Microsoft Excel 16.0 Objektverzeichnis (siehe C# für weitere Informationen).

Das Ausführen der Anwendung geht die Präsentation in C:\Samples\GetMekkoGraphicsXML\presentation.pptx durch und druckt die XML der enthaltenen Mekko Graphics Diagramme zur Konsole aus.

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 Verschiedenes

Die Funktionen in diesem Abschnitt sind Methoden des think-cell Add-In PowerPoint.

F.2.4.1 Einfügen der Tabelle beginnen

Unterstützt in think-cell 13 und späteren Versionen

F.2.4.1.1 Signatur
VBA
tcPpAddIn.StartTableInsertion()
C#
void tcPpAddIn.StartTableInsertion();
F.2.4.1.2 Beschreibung

Das Aufrufen dieser Methode hat die gleiche Wirkung wie das Anklicken von Tabelle im Menü Elemente in PowerPoint.

Teilen