Automatisierung mit Excel-Daten
- Startseite
- Ressourcen
- Benutzerhandbuch
- thinkcell Charts: Datenvisualisierung
- Erweiterte Berichtsautomatisierung
- Automatisierung mit Excel-Daten
Automatisierung mit Excel-Daten ist mit thinkcell Suite verfügbar.
Unter Windows können Sie thinkcell-API-Funktionen verwenden, um programmgesteuert thinkcell-Präsentationen mit Daten aus Excel zu erstellen.
Einführung in die Automatisierung mit Excel-Daten
Excel-Automatisierung ist besonders hilfreich, wenn Sie regelmäßig umfangreiche Berichte erstellen müssen, ohne die Daten jedes Mal manuell zu aktualisieren. Für kleinere oder spontane Diagrammaufgaben empfehlen wir die Verwendung von Excel-Datenverknüpfungen.
Um eine Kopie einer PowerPoint-Vorlage zu erstellen und alle thinkcell-Elemente in der kopierten Präsentation zu aktualisieren, die mit einer Excel-Arbeitsmappe verknüpft sind (siehe Excel-Datenverknüpfungen), verwenden Sie die Funktion PresentationFromTemplate.
Um bestimmte thinkcell-Elemente in einer PowerPoint-Vorlage zu aktualisieren, unabhängig davon, ob sie mit Excel verknüpft sind, verwenden Sie die UpdateBatch-API. UpdateBatch ersetzt UpdateChart (veraltet). Wenn Ihr vorhandener Code jedoch UpdateChart verwendet, funktioniert dieser Code weiterhin.
Die thinkcell-API und Office-Automatisierung
Die thinkcell-API ist in Microsoft's Component Object Model (COM) integriert, sodass Sie aus jeder Sprache, mit der Sie Office programmieren können, auf die API zugreifen können, z. B. Visual Basic for Applications (VBA) oder C#. Anweisungen zur Verwendung von VBA und C# finden Sie unter Erste Schritte mit der thinkcell-API.
Der Einstiegspunkt in thinkcell ist das thinkcell-Add-in-Objekt. Sie können über die Sammlung Application.COMAddIns auf das Objekt zugreifen. Aufrufe an thinkcell sind immer spät gebunden (siehe Microsoft Learn). Daher ist der Typ des thinkcell-Add-in-Objekts einfach Object, und Sie müssen keine Typbibliothek oder Referenz hinzufügen. Sobald Sie das Objekt abgerufen haben, können Sie Aufrufe ausführen. Verwenden Sie beispielsweise in VBA in Excel den folgenden Code:
Dim tcXlAddIn As Object
Set tcXlAddIn = Application.COMAddIns("thinkcell.addin").Object
In C# können Sie späte Bindung erreichen, indem Sie den Verweis auf das thinkcell-Add-in-Objekt als dynamic deklarieren. Wenn Sie den Verweis als var deklarieren, leitet der Compiler ab, dass das Objekt vom Typ dynamic ist, sodass Sie einfach den folgenden Code verwenden können. Hier ist xlapp ein Verweis auf ein Excel.Application-Objekt, das thinkcell lädt.
var tcXlAddIn = xlapp.COMAddIns.Item("thinkcell.addin").Object;
Excel- und Vorlagen-Datenlayouts abgleichen
Damit Ihre Daten im zugehörigen Diagramm korrekt angezeigt werden, muss Ihr Datenlayout in Excel mit dem Datenblattlayout des Diagramms in der Vorlage übereinstimmen (siehe Datenlayout verknüpfter Bereiche transponieren und bearbeiten). Wenn Sie beispielsweise die Zeile 100%= im Vorlagendiagramm hinzufügen, interpretiert thinkcell die zweite Zeile Ihrer Excel-Daten als die Summen, aus denen Prozentsätze berechnet werden.
Die folgende Tabelle fasst gängige Datenlayoutoptionen, ihre Position im Datenlayout und ihre Standardeinstellung zusammen. Um das Datenlayout eines bestimmten Diagramms zu überprüfen, doppelklicken Sie auf das Diagramm, um dessen Datenblatt zu öffnen.
|
Datenlayoutoption |
Inhalt |
Position |
Standardeinstellung |
|---|---|---|---|
|
Series |
Reihenbeschriftungen |
Spalte 1 |
Ausgewählt |
|
Category |
Kategoriebeschriftungen |
Zeile 1 |
Ausgewählt |
|
100%= |
Summen für Prozentberechnungen |
Zeile 2 (wenn Category ausgewählt) |
Nicht ausgewählt |
Elementformatierung an Excel anpassen
Sie können die Formatierung Ihrer Elemente – z. B. Zahlenformat, Füllung und Schriftfarbe – an die Formatierung in der Excel-Arbeitsmappe anpassen. Wenden Sie vor dem Aufruf von PresentationFromTemplate oder UpdateBatch in Ihrer Excel-Arbeitsmappe die gewünschte Formatierung an. Passen Sie dann in der PowerPoint-Vorlage das Zahlenformat, die Schriftformatierung, die Füllung oder die Rahmen des Elements an die Excel-Arbeitsmappe an (siehe Elementformatierung an den verknüpften Datenbereich anpassen).
PresentationFromTemplate
Die Funktion PresentationFromTemplate erstellt eine Kopie einer PowerPoint-Vorlage und aktualisiert alle thinkcell-Elemente in der kopierten Präsentation, die mit einer Excel-Arbeitsmappe verknüpft sind. Weitere Informationen zu verknüpften thinkcell-Elementen finden Sie unter Excel-Datenverknüpfungen.
PresentationFromTemplate-Signatur
VBA
tcXlAddIn.PresentationFromTemplate( _
Workbook As Excel.Workbook, _
Template As String, _
PpApplication As PowerPoint.Application _
) As PowerPoint.Presentation
C#
PowerPoint.Presentation tcXlAddIn.PresentationFromTemplate(
Excel.Workbook Workbook,
string Template,
PowerPoint.Application PpApplication
);
PresentationFromTemplate-Beschreibung
PresentationFromTemplate verwendet die folgenden Argumente:
Workbookbezieht sich auf die Excel-Arbeitsmappe, die Ihre Daten enthält.Templatebezieht sich auf die PowerPoint-Vorlage, die die Elemente enthält, die Sie mit Daten füllen möchten. Um ein Element mit Daten zu füllen, muss es mit einem Bereich inWorkbookverknüpft sein (siehe Excel-Datenverknüpfungen).Templatekann einen relativen Pfad vom Speicherort vonWorkbookoder einen absoluten Pfad angeben.PpApplicationbezieht sich auf die PowerPoint-Instanz, die die neue Präsentation generiert.
PresentationAsTemplate erstellt eine Kopie von Template und aktualisiert alle Elemente in der kopierten Präsentation, die mit Workbook verknüpft sind, unabhängig davon, ob Sie die Elemente so eingestellt haben, dass sie automatisch aktualisiert werden (siehe Verknüpfte Elemente manuell aktualisieren).
In der neuen Präsentation trennt PresentationFromTemplate absichtlich die Excel-Verknüpfungen der aktualisierten Elemente, um unbeabsichtigte weitere Aktualisierungen zu verhindern. Elemente, die von der Funktion nicht aktualisiert werden, behalten jedoch ihre Excel-Verknüpfungen. Das bedeutet, dass Sie Verknüpfungen aus mehreren Excel-Arbeitsmappen aktualisieren können. Rufen Sie dazu nach dem Erstellen Ihrer neuen Präsentation PresentationFromTemplate erneut mit Ihrer nächsten Arbeitsmappe auf und verwenden Sie die soeben erstellte Präsentation als Vorlage.
PresentationFromTemplate-Beispiele
Um diese Beispiele zu verwenden, erstellen Sie zunächst eine Präsentation mit einem gestapelten Säulendiagramm, das mit dem Bereich G1:K4 im ersten Blatt einer Excel-Arbeitsmappe verknüpft ist (siehe Diagramme aus Excel erstellen). Speichern Sie die Präsentation als C:\Samples\PresentationFromTemplate\template.pptx und die Arbeitsmappe als data.xlsx im selben Verzeichnis.
VBA
In diesem Beispiel ändert die Prozedur PresentationFromTemplate_Sample() in Sheet1 den Wert von H3 von i=1 bis 10. H3 ist mit dem ersten Wert in der ersten Reihe des gestapelten Säulendiagramms verknüpft. Für jeden neuen Wert von H3 führt PresentationFromTemplate_Sample() Folgendes aus:
- Erstellt eine Kopie von
template.pptx. - Aktualisiert in der kopierten Präsentation das Diagramm mit dem neuen Wert.
- Trennt die Excel-Verknüpfung des Diagramms.
- Speichert die neue Präsentation im selben Verzeichnis wie die Vorlage als
output_i.pptx.
Um dieses Beispiel zu verwenden, erstellen Sie in der Excel-Arbeitsmappe data.xlsx, die Sie zuvor erstellt haben, ein Modul mit der folgenden Prozedur. Das Modul erfordert einen Verweis auf die Microsoft PowerPoint 16.0 Object Library (siehe Visual Basic for Applications).
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 thinkcell 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 start.
' 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#
In diesem Beispiel öffnet das Programm Excel und lädt data.xlsx. Anschließend ändert das Programm in Sheet1 den Wert von H3 von i=1 bis 10. H3 ist mit dem ersten Wert in der ersten Reihe des gestapelten Säulendiagramms verknüpft. Für jeden neuen Wert von H3 führt das Programm Folgendes aus:
- Erstellt eine Kopie von
template.pptx. - Aktualisiert in der kopierten Präsentation das Diagramm mit dem neuen Wert.
- Trennt die Excel-Verknüpfung des Diagramms.
- Speichert die neue Präsentation im selben Verzeichnis wie die Vorlage als
output_i.pptx.
Um dieses Beispiel zu verwenden, ersetzen Sie in der C#-Projektvorlage Console App den Code in Program.cs durch den folgenden Code. Das Programm erfordert Verweise auf die Microsoft PowerPoint 16.0 Object Library, die Microsoft Excel 16.0 Object Library und die Microsoft Office 16.0 Object Library (siehe C#).
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();
}
}
}
UpdateBatch
Mit der UpdateBatch-API können Sie festlegen, welche thinkcell-Elemente in einer PowerPoint-Vorlage mit neuen Excel-Daten aktualisiert werden. Sie können Elemente unabhängig davon aktualisieren, ob sie mit Excel verknüpft sind.
UpdateBatch ersetzt UpdateChart (veraltet). Obwohl vorhandener Code, der UpdateChart verwendet, weiterhin funktioniert, empfehlen wir aus folgenden Gründen, stattdessen UpdateBatch zu verwenden:
- Neue Funktionen, z. B. das Füllen von Bildern von Tabellen mit Excel-Daten (siehe Bilder von Tabellen erstellen), sind nur in
UpdateBatchverfügbar. - Mit neueren thinkcell-Versionen kann
UpdateChartsehr langsam sein, insbesondere bei großen Präsentationen.
UpdateBatch-Signaturen
VBA
tcXlAddIn.CreateUpdate() As Object
tcUpdate.AddRangeData(
Target As Object, _
Name As String, _
Range As Excel.Range, _
Transposed As Boolean _
)
tcUpdate.AddRangeImage(
Target As Object, _
Name As String, _
Range As Excel.Range _
)
tcUpdate.Send()
C#
object tcXlAddIn.CreateUpdate();
void tcUpdate.AddRangeData(
object Target,
string Name,
Excel.Range Range,
bool Transposed
);
void tcUpdate.AddRangeImage(
object Target,
string Name,
Excel.Range Range
);
void tcUpdate.Send();
UpdateBatch-Beschreibung
UpdateBatch enthält die folgenden Funktionen:
CreateUpdateerstellt ein Objekt zum Speichern aller Elemente, die Sie aktualisieren möchten, sowie der zugehörigen Excel-Datenbereiche.AddRangeDataplant eine Aktualisierung für ein Diagramm, eine Tabelle, ein Automatisierungstextfeld, einen Harvey Ball, ein Kontrollkästchen oder ein Bild, das Sie mit Excel-Daten füllen möchten.AddRangeImageplant eine Aktualisierung für ein Bild einer Tabelle, das Sie mit Excel-Daten füllen möchten (siehe Bilder von Tabellen erstellen).Senderfasst die Excel-Daten und sendet sie an PowerPoint, um eine Präsentation zu erstellen. Wenn Ihr Code auf mit Excel verknüpfte Elemente in Ihrer PowerPoint-Vorlage abzielt, werden diese Verknüpfungen getrennt (siehe Excel-Datenverknüpfungen).
AddRangeData und AddRangeImage verwenden die folgenden Argumente:
Targetverweist auf die PowerPoint-Vorlage, die die Elemente enthält, die Sie mit Daten füllen möchten.Targetkann einePresentation, einSlideRange, eineSlide, einMasteroder einCustomLayoutsein.Nameverweist auf ein Element mit einemAddRangeData- oderAddRangeImage-Namen. Bevor SieUpdateBatchausführen, müssen Sie den Namen in der PowerPoint-Vorlage über AddRangeData Name oder AddRangeImage Name zuweisen (siehe PowerPoint-Vorlagen für die Berichtsautomatisierung erstellen). Bei Namen wird nicht zwischen Groß- und Kleinschreibung unterschieden. Wenn zwei Elemente innerhalb vonTargetdenselben Namen haben, füllt thinkcell sie mit denselben Daten.Rangeverweist auf den Excel-Bereich, der die Daten für das Element enthält.Transposed(nurAddRangeData): Wenn die Ausrichtung Ihres Excel-Bereichs der Standardausrichtung des Element-Datenblatts in PowerPoint entspricht, setzen SieTransposedaufFalse. Andernfalls setzen SieTransposedaufTrue. Eine Beschreibung der Argumentwerte für verschiedene Elementtypen finden Sie in der folgenden Tabelle.
|
Elementtyp |
|
|---|---|
|
Alle Diagramme außer Gantt-, Punkt- und Blasendiagrammen |
|
|
Tabellen |
|
|
Gantt-Diagramme |
|
|
Punkt- und Blasendiagramme |
|
UpdateBatch-Beispiele
Die folgenden VBA- und C#-Codebeispiele aktualisieren drei Elemente in der PowerPoint-Vorlage mit den Daten im ersten Blatt einer Excel-Arbeitsmappe. Die Beispiele speichern die resultierende Präsentation als template_updated.pptx.
Um diese Beispiele zu verwenden, erstellen Sie eine PowerPoint-Vorlage mit thinkcell-Elementen und eine Excel-Arbeitsmappe mit Daten zum Füllen der Elemente.
So erstellen Sie die PowerPoint-Vorlage:
- Erstellen Sie eine PowerPoint-Präsentation mit einem Folientitel und einem Diagramm wie in Beispiel für eine PowerPoint-Vorlage beschrieben.
- Fügen Sie in der Präsentation ein Bild einer Tabelle hinzu (siehe Bilder von Tabellen erstellen).
- Öffnen Sie die Mini-Symbolleiste der Tabelle. Geben Sie in AddRangeImage Name
TableAsImage1ein. Wählen Sie Enter aus. - Speichern Sie die Präsentation unter
C:\Samples\UpdateBatch\template.pptx.
So erstellen Sie die Excel-Arbeitsmappe:
- Öffnen Sie eine Excel-Arbeitsmappe.
- Geben Sie in A1 einen Folientitel ein.
- Geben Sie in A2:D5 Diagrammdaten ein. Stellen Sie sicher, dass das Datenlayout in Excel dem Datenblattlayout des Diagramms in der PowerPoint-Vorlage entspricht (siehe Excel- und Vorlagen-Datenlayouts abgleichen).
- Geben Sie in A7:D10 Tabellendaten ein. Jede Tabellenformatierung, die Sie anwenden, z. B. Füllungen und Rahmen, wird in der neuen Präsentation angezeigt.
- Speichern Sie die Arbeitsmappe unter
C:\Samples\UpdateBatch\data.xlsx.
Wenn Sie Pfade in Ihren UpdateBatch-Prozeduren angeben, verwenden Sie einen doppelten Backslash (\\) als Verzeichnistrennzeichen.
VBA
Um dieses Codebeispiel zu verwenden, erstellen Sie in der zuvor erstellten Excel-Arbeitsmappe ein Modul mit der folgenden Prozedur. Das Modul erfordert einen Verweis auf die Microsoft PowerPoint 16.0 Object Library. Weitere Informationen finden Sie unter Visual Basic for Applications.
Option Explicit
Sub UpdateBatch_Sample()
' Get the ranges that contain the new data
Dim rngTitle As Excel.Range
Set rngTitle = ActiveWorkbook.Sheets(1).Range("A1")
Dim rngChart As Excel.Range
Set rngChart = ActiveWorkbook.Sheets(1).Range("A2:D5")
Dim rngTableAsImage As Excel.Range
Set rngTableAsImage = ActiveWorkbook.Sheets(1).Range("A7:D10")
' Get the thinkcell add-in object
Dim tcXlAddIn As Object
Set tcXlAddIn = Application.COMAddIns("thinkcell.addin").Object
' Get a PowerPoint instance. Hold onto this object as long as
' you want to access the new presentation. There can only be one
' PowerPoint instance. If there is no instance, the script will
' start one. Otherwise, the script uses the existing instance.
Dim ppapp As Object
Set ppapp = New PowerPoint.Application
Dim pres As PowerPoint.Presentation
' When the script ends, this code opens the new presentation
' so that you can edit it further. To keep the presentation open,
' also remove pres.Close and ppapp.Quit.
' Set pres = ppapp.Presentations.Open( _
' Filename:="C:\\Samples\\UpdateBatch\\template.pptx", _
' Untitled:=msoTrue _
' )
' When the script ends, this code does not open the new presentation.
Set pres = ppapp.Presentations.Open( _
Filename:="C:\\Samples\\UpdateBatch\\template.pptx", _
Untitled:=msoTrue, _
WithWindow:=msoFalse _
)
Dim tcUpdate As Object
Set tcUpdate = tcXlAddIn.CreateUpdate
Call tcUpdate.AddRangeData(pres, "Title", rngTitle, False)
Call tcUpdate.AddRangeData(pres, "Chart1", rngChart, False)
Call tcUpdate.AddRangeImage(pres, "TableAsImage1", rngTableAsImage)
Call tcUpdate.Send
pres.SaveAs("C:\\Samples\\UpdateBatch\\template_updated.pptx")
pres.Close
ppapp.Quit
End Sub
C#
Um dieses Codebeispiel zu verwenden, ersetzen Sie in der C#-Projektvorlage Console App den Code in Program.cs durch den folgenden Code.
Das Programm erfordert Verweise auf die Microsoft PowerPoint 16.0 Object Library, die Microsoft Excel 16.0 Object Library und die Microsoft Office 16.0 Object Library. Weitere Informationen finden Sie unter C#.
using Excel = Microsoft.Office.Interop.Excel;
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Office = Microsoft.Office.Core;
namespace ConsoleApplication_UpdateBatch
{
class Program
{
static void Main()
{
PowerPoint.Application ppapp = new PowerPoint.Application();
PowerPoint.Presentation presentation = ppapp.Presentations.Open(
"C:\\Samples\\UpdateBatch\\template.pptx",
Office.MsoTriState.msoFalse,
Office.MsoTriState.msoTrue
);
Excel.Application xlapp = new Excel.Application { Visible = true };
Excel.Workbook workbook = xlapp.Workbooks.Open(
"C:\\Samples\\UpdateBatch\\data.xlsx",
Office.MsoTriState.msoFalse,
Office.MsoTriState.msoTrue
);
Excel.Worksheet worksheet = workbook.Sheets[1];
var tcXlAddIn = xlapp.COMAddIns.Item("thinkcell.addin").Object;
var tcUpdate = tcXlAddIn.CreateUpdate();
tcUpdate.AddRangeData(
presentation,
"SlideTitle",
worksheet.get_Range("A1"),
true
);
tcUpdate.AddRangeData(
presentation,
"Chart1",
worksheet.get_Range("A2", "D5"),
true
);
tcUpdate.AddRangeImage(
presentation,
"TableAsImage1",
worksheet.get_Range("A7", "D10")
);
tcUpdate.Send();
presentation.SaveAs("C:\\Samples\\UpdateBatch\\template_updated.pptx");
presentation.Close();
ppapp.Quit();
workbook.Close(false);
xlapp.Quit();
}
}
}
UpdateChart (veraltet)
UpdateChart aktualisiert das Datenblatt eines bestimmten Elements mit Ihren Excel-Daten.
UpdateBatch hat UpdateChart ersetzt (siehe UpdateBatch). Vorhandener Code, der UpdateChart verwendet, funktioniert zwar weiterhin, wir empfehlen Ihnen jedoch aus den folgenden Gründen, für neuen Code stattdessen UpdateBatch zu verwenden:
- Neue Funktionen, z. B. das Füllen von Bildern von Tabellen mit Excel-Daten (siehe Bilder von Tabellen erstellen), sind nur in
UpdateBatchverfügbar. - Mit neueren thinkcell-Versionen kann
UpdateChartsehr langsam sein, insbesondere bei großen Präsentationen.
UpdateChart-Signatur
VBA
tcXlAddIn.UpdateChart( _
Target As Object, _
ChartName As String, _
Range As Excel.Range, _
Transposed As Boolean _
)
C#
void tcXlAddIn.UpdateChart(
object Target,
string ChartName,
Excel.Range Range,
bool Transposed
);
Brauchen Sie Hilfe bei der Fehlerbehebung?
Besuchen Sie unsere Knowledge Base