Difference between revisions of "ExcelAutomation/de"
From Lazarus wiki
Jump to navigationJump to searchLine 110: | Line 110: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | + | =Excel OleObjekt: Worksheets= | |
− | =Excel OleObjekt: Worksheet einfügen= | + | ==Excel OleObjekt: Worksheet einfügen== |
<syntaxhighlight> | <syntaxhighlight> | ||
begin | begin | ||
Line 120: | Line 120: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | = | + | ==Worksheet umbenennen== |
<syntaxhighlight> | <syntaxhighlight> | ||
begin | begin | ||
Line 130: | Line 130: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | = | + | ==Worksheet löschen== |
<syntaxhighlight> | <syntaxhighlight> | ||
begin | begin |
Revision as of 19:31, 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: Workbooks
Workbook einfügen
begin
...
varXLApp.Workbooks.Add; // fügt ein neues Workbook ein
...
end;
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;
Workbook unter neuem Namen speichern
begin
...
varXLApp.Workbooks[1].SaveAs('D:\Test.xls', varXLApp.Workbooks[1].fileformat);
...
end;
Excel OleObjekt: Worksheets
Excel OleObjekt: Worksheet einfügen
begin
...
varXLApp.WorkBooks[1].WorkSheets.Add; //fügt ein neues WorkSheet hinzu
...
end;
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;
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)