Difference between revisions of "ExcelAutomation/de"
From Free Pascal wiki
Jump to navigationJump to searchLine 55: | Line 55: | ||
<br> | <br> | ||
− | + | =Excel OleObjekt: Fehlermeldungen und Warnungen deaktivieren= | |
Dekativieren von bestimmten Fehlermeldungen und Warnungen kann die Softwaresteuerung vereinfachen. | Dekativieren von bestimmten Fehlermeldungen und Warnungen kann die Softwaresteuerung vereinfachen. | ||
<syntaxhighlight> | <syntaxhighlight> | ||
Line 65: | Line 65: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | + | =Excel OleObjekt: Sichtbarkeit steuern= | |
Das Verhindern der Anzeige beschleunigt die Verarbeitungsgeschwindigkeit und verhindert das Flackern des Bildschirms. | Das Verhindern der Anzeige beschleunigt die Verarbeitungsgeschwindigkeit und verhindert das Flackern des Bildschirms. | ||
<syntaxhighlight> | <syntaxhighlight> | ||
Line 79: | Line 79: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | + | =Excel OleObjekt: Workbook einfügen= | |
<syntaxhighlight> | <syntaxhighlight> | ||
begin | begin | ||
Line 88: | Line 88: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | + | =Excel OleObjekt: Workbook speichern= | |
<syntaxhighlight> | <syntaxhighlight> | ||
begin | begin | ||
Line 98: | Line 98: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | + | =Excel OleObjekt: Workbook unter neuem Namen speichern= | |
<syntaxhighlight> | <syntaxhighlight> | ||
begin | begin | ||
Line 107: | Line 107: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | + | =Excel OleObjekt: Worksheet einfügen= | |
<syntaxhighlight> | <syntaxhighlight> | ||
begin | begin | ||
Line 116: | Line 116: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | + | =Excel OleObjekt: Worksheet umbenennen= | |
<syntaxhighlight> | <syntaxhighlight> | ||
begin | begin | ||
Line 126: | Line 126: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | + | =Excel OleObjekt: Worksheet löschen= | |
<syntaxhighlight> | <syntaxhighlight> | ||
begin | begin | ||
Line 136: | Line 136: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | + | =Excel OleObjekt: Formel einfügen= | |
<syntaxhighlight> | <syntaxhighlight> | ||
begin | begin | ||
Line 146: | Line 146: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | + | =Excel OleObjekt: Autofilter setzen= | |
<syntaxhighlight> | <syntaxhighlight> | ||
begin | begin |
Revision as of 19:21, 20 September 2012
Excel als OleObjekt
Alle Möglichkeiten Excel zu Automatisieren ist nicht möglich ich hoffe aber für jeden Bedarf Anregungen gefunden zu haben.
Excel ist zu dem die automatisierungsfreundlichste Software von Microsoft.
Speicherplatz reservieren
var
varXLApp: OleVariant;
Excel OleObjekt erstellen
begin
...
try
varXLApp := CreateOleObject('Excel.Application'); // erstellt das Excelobjekt
except
WriteLn('MS Excel kann nicht gestartet werden.'); // Fehlerbehandlung
end;
...
end;
Excel OleObjekt beenden und Speicher freigeben
begin
...
varXLApp.Quit;
varXLApp := Unassigned; //Der Speicher muss am Ende wieder freigegeben werden, sonst entstehen Speicherlecks
...
end;
Excel Version ermitteln
begin
...
ShowMessage(varXLApp.Version);
...
end;
Excel OleObjekt: Datei öffnen und Datei schliessen
begin
...
varXLApp.Workbooks.Open(strPfad); // öffnet die Exceldatei (Pfad: maximal 255 Zeichen, Alphanumerisch)
...
varXLApp.Workbooks[1].Close;
...
end;
Excel OleObjekt: Fehlermeldungen und Warnungen deaktivieren
Dekativieren von bestimmten Fehlermeldungen und Warnungen kann die Softwaresteuerung vereinfachen.
begin
...
varXLApp.DisplayAlerts := False; // schaltet diverse Fehlermeldungen von Excel aus
...
end;
Excel OleObjekt: Sichtbarkeit steuern
Das Verhindern der Anzeige beschleunigt die Verarbeitungsgeschwindigkeit und verhindert das Flackern des Bildschirms.
begin
...
varXLApp.Visible := False; // macht Excel unsichtbar
varXLApp.ScreenUpdating = False; // schaltet das ScreenUpdating von Excel aus
varXLApp.ScreenUpdating = True; // schaltet das ScreenUpdating von Excel ein
varXLApp.Visible := True; // macht Excel sichtbar
...
end;
Excel OleObjekt: Workbook einfügen
begin
...
varXLApp.Workbooks.Add; // fügt ein neues Workbook ein
...
end;
Excel OleObjekt: Workbook speichern
begin
...
varXLApp.Workbooks[1].Save; // speichert ein Worksheet über seinen Index
varXLApp.Workbooks['Test.xls'].Save; // speicher ein Worksheet über seinen Namen
...
end;
Excel OleObjekt: Workbook unter neuem Namen speichern
begin
...
varXLApp.Workbooks[1].SaveAs('D:\Test.xls', varXLApp.Workbooks[1].fileformat);
...
end;
Excel OleObjekt: Worksheet einfügen
begin
...
varXLApp.WorkBooks[1].WorkSheets.Add; //fügt ein neues WorkSheet hinzu
...
end;
Excel OleObjekt: Worksheet umbenennen
begin
...
varXLApp.WorkBooks[1].WorkSheets[1].Name := 'Neuer Name'; // benennt ein Worksheet über seinen Index um
varXLApp.WorkBooks[1].WorkSheets['Tabelle1'].Name := 'Neuer Name'; // benennt ein Worksheet über seinen Namen um
...
end;
Excel OleObjekt: Worksheet löschen
begin
...
varXLApp.WorkBooks[1].WorkSheets[3].Delete; // löscht ein Worksheet über seinen Index
varXLApp.WorkBooks[1].WorkSheets['Tabelle3'].Delete; // löscht ein Worksheet über seinen Namen
...
end;
Excel OleObjekt: Formel einfügen
begin
...
// setzt den Autofilter auf die erste Zeile
varXLApp.Range['C6', 'C6'].Formula := '=Sum(A5:A7)'
...
end;
Excel OleObjekt: Autofilter setzen
begin
...
// setzt den Autofilter auf die erste Zeile
varXLApp.WorkBooks[1].WorkSheets[1].Rows.Rows[1].AutoFilter;
...
end;
Excel OleObjekt: Zeilenbreite und Spaltenhöhe setzen
begin
...
// Setzt die Spaltenbreite für Spalte 1
varXLApp.WorkBooks[1].WorkSheets[1].Columns.Columns[1].ColumnWidth := 70;
// oder
varXLApp.WorkBooks[1].WorkSheets['Tabelle1'].Columns.Columns[1].ColumnWidth := 70;
// Setzt die Spaltenhöhe für Zeile 1
varXLApp.WorkBooks[1].WorkSheets[1].Rows.Rows[1].RowHeight := 60;
// oder
varXLApp.WorkBooks[1].WorkSheets['Tabelle1'].Rows.Rows[1].RowHeight := 60;
...
end;
Excel OleObjekt: Rahmen zeichnen
begin
...
// Zeichnet einen Rahmen um den Bereich "B2:C3"
// Der Parameter BorderAround hat folgende Syntax: BorderAround(Linienstil, Linenstärke, Farbe)
varXLApp.WorkBooks[1].WorkSheets[1].Range['B2:C3'].BorderAround(1, 2, 1);
...
end;
Excel OleObjekt: Hyperlinks und URLS einfügen
begin
...
// Fügt eine URL in Zelle "A2" in Sheet 2 ein
// Alternative 1
varXLApp.WorkBooks[1].Worksheets[2].Hyperlinks.add(
varXLApp.WorkBooks[1].Worksheets[2].Cells[2, 1], 'http://www.google.de');
// Alternative 2
varXLApp.WorkBooks[1].worksheets[2].Cells[2,1].Formula := '=HYPERLINK("http://www.google.de")';
// Fügt eine Emailadresse als Formel in Zelle "A3" in Sheet 2 ein
varXLApp.WorkBooks[1].worksheets[2].Cells[3,1].Formula := '=HYPERLINK("mailto:test.testmann.@test.com","Email")';
...
end;
Excel OleObjekt Worksheet: Hintergrundbild einfügen
begin
...
varXLApp.WorkBooks[1].WorkSheets[1].SetBackGroundPicture('D:\Testbild.JPG'); // fügt das Hintergrundbild über Index ein
varXLApp.WorkBooks['Test.xls'].WorkSheets['Tabelle2'].SetBackGroundPicture('D:\Testbild.JPG'); // fügt das Hintergrundbild über Namen ein
...
end;
Excel OleObjekt: Wert einfügen
begin
...
// Alternative 1
varXLApp.WorkBooks[1].WorkSheets[1].Range['A5'].Value := 3;
varXLApp.WorkBooks[1].WorkSheets[1].Range['A6'].Value := 3;
varXLApp.WorkBooks[1].WorkSheets[1].Range['A7'].Value := 3;
// Alternative 2
varXLApp.WorkBooks[1].WorkSheets[1].Range['A5', 'A7'].Value := 3;
// Alternative 3
varXLApp.WorkBooks[1].WorkSheets['Tabelle1'].Range['A5', 'A7'].Value := 3;
// Alternative ...
...
end;
Excel OleObjekt: Formel einfügen
begin
...
// Alternative 1
varXLApp.WorkBooks[1].worksheets[2].Cells[6,3].Formula := '=Sum(A5:A7)';
// Alternative 2
varXLApp.WorkBooks[1].WorkSheets[2].Range['C6'].Formula := '=Sum(A5:A7)';
...
end;
Excel OleObjekt: Arbeiten mit Schriften
begin
...
// Legt die Schriftart fest
varXLApp.WorkBooks[1].WorkSheets['Tabelle1'].Cells[1, 1].Font.Name := 'Arial';
// Legt die Schriftgröße fest
varXLApp.WorkBooks[1].WorkSheets['Tabelle1'].Cells[1, 1].Font.Size := 20;
// Legt die Fettschrift fest
varXLApp.WorkBooks[1].WorkSheets['Tabelle1'].Cells[1, 1].Font.Bold := True;
//Legt die Kursivschrift fest
varXLApp.WorkBooks[1].WorkSheets['Tabelle1'].Cells[1, 1].Font.Italic := True;
// Unterstreicht den Eintrag
varXLApp.WorkBooks[1].WorkSheets['Tabelle1'].Cells[1, 1].Font.Underline := True;
...
end;
Excel OleObjekt: Worksheet aktivieren
begin
...
varXLApp.WorkBooks[1].WorkSheets['Tabelle1'].Activate;
...
end;
Excel OleObjekt: Chart erstellen
Die Beispiele gehen davon aus, dass das Excelobjekt (varXLApp) bereits existiert und die Exceldatei geöffnet ist.
Chart Speicher reservieren
var
varDiagramm: OleVariant;
Chart Speicher freigeben
begin
...
varDiagramm := Unassigned;
...
end;
Chart Objekt erstellen
begin
...
varDiagramm := varXLApp.Charts.Add; // Fügt ein Chart ein
...
end;
Chart aktivieren
begin
...
varDiagramm.Activate; // Aktiviert das Chart
...
end;
Chart Diagramtyp festlegen
begin
...
varDiagramm.ChartType := xlColumnClustered; // Legt den Diagramtyp fest
...
end;
Chart Datenherkunft (Datenquelle) festlegen
begin
...
varDiagramm.SetSourceData (Source := varXLApp.WorkSheets['Tabelle1'].Range['A1:E13'],
PlotBy := xlColumns); // Legt die Datenherkunft (das Excelsheet und den Bereich im Excelsheet) fest
...
end;
Chart verschieben festlegen
begin
...
// Diagramm im selben Tabellenblatt wie die Datentabelle.
varDiagramm.Location (Where := xlLocationAsObject, Name:= 'Tabelle1');
...
end;
Chart Titel
begin
...
varXLApp.Worksheets[1].ChartObjects[1].Chart.HasTitle := True; // Legt fest, dass das Chart einen Titel haben darf
varXLApp.Worksheets[1].ChartObjects[1].Chart.ChartTitle
.Characters.Text := 'Test'; // Legt den Namen des Chart Titels fest
varXLApp.Worksheets[1].ChartObjects[1].Chart.ChartTitle
.Font.Color := vbRed; // Legt die Schriftfarbe des Diagrammtitels fest
varXLApp.Worksheets[1].ChartObjects[1].Chart.ChartTitle
.Interior.Color := vbCyan; // Legt die Hintergrundarbe des Diagrammtitels fest
...
end;
Chart Achsenbeschriftung
begin
...
varXLApp.Worksheets[1].ChartObjects[1].Chart.HasAxis(xlCategory) := True; // Legt fest, dass das Chart Achsen hat
varXLApp.Worksheets[1].ChartObjects[1].Chart.Axes(xlCategory).TickLabels
.Font.Color := vbBlue; // Legt die Schriftfarbe der Achsenkategorie fest
varXLApp.Worksheets[1].ChartObjects[1].Chart.Axes(xlValue).HasTitle:= True; // Legt fest, dass das Chart eine Achsenbeschriftung haben darf
varXLApp.Worksheets[1].ChartObjects[1].Chart.Axes(xlValue).AxisTitle
.Characters.Text := 'Euro'; // Legt den Achsentitel fest, Achtung: es gibt Probleme mit dem Eurozeichen €
varXLApp.Worksheets[1].ChartObjects[1].Chart.Axes(xlValue).AxisTitle
.Font.Color := vbBlue; // Legt die Schriftfarbe des Achsentitels fest
varXLApp.Worksheets[1].ChartObjects[1].Chart.Axes(xlValue).AxisTitle
.Font.Size := 12; // Legt die Schriftgrösse des Achsentitels fest
...
end;
Chart Legende
begin
...
varXLApp.Worksheets[1].ChartObjects[1].Chart.SeriesCollection(1)
.Name := '="Eins"'; //Legt die Beschriftung der Chartlegende fest
...
end;
--Olaf 17:13, 20 September 2012 (UTC)