Wiki-KopieMirror

Dies ist ein Mirror des Wikis von pascal.chat. Bearbeiten, Verlauf und Anmeldung finden dort statt.

ExcelAutomation2007plus/de

Zurück zur Office Automation.\

=Excel 2007=

Speicherplatz reservieren

pascal
var
  varXLApp: oleVariant;      // wird für die Adressierung des Programms Excel verwedet
  varXLWb: oleVariant;       // wird für die Adressierung des Exceldatei verwendet
  wstrUebergabe: WideString; // Hilfsvariable (wird z. B. für Umlaute usw. benötigt)

==Excel OleObjekt erstellen==

pascal
begin
   ...
   try
     varXLApp := CreateOleObject('Excel.Application');  // erstellt das Excelobjekt
   except
     WriteLn('MS Excel kann nicht gestartet werden.');  // Fehlerbehandlung
   end;
   ...
end;

==Excel beenden und den Speicher freigeben==

pascal
begin
   ...
   varXLApp.Quit;
   varXLApp := UnAssigned; //Der Speicher muss am Ende wieder freigegeben werden, sonst entstehen Speicherlecks
   ...
end;

==Excel Version ermitteln==

pascal
begin
  ...
  ShowMessage(varXLApp.Version);
  ...
end;

==Fehlermeldungen und Warnungen deaktivieren== Das Dekativieren von bestimmten Fehlermeldungen und Warnungen kann die Softwaresteuerung vereinfachen.

pascal
begin
   ...
   varXLApp.DisplayAlerts := False;   // schaltet diverse Fehlermeldungen von Excel aus
   ...
end;

==Sichtbarkeit von Excel steuern== Wenn das Screenupdating während der Automation auf False gesetzt wird, dann wird dadurch das Flackern des Bildschirms während der Automation verhindert.

pascal
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;

=Workbooks=
==Workbook (Datei) einfügen== Erstellt eine neue Datei.

pascal
begin
   ...
   varXLApp.Workbooks.Add;               // fügt ein neues Workbook ein
   ...
end;

==Workbook speichern==

pascal
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==

pascal
begin
   ...
   varXLApp.Workbooks[1].SaveAs('D:\Test.xls', varXLApp.Workbooks[1].fileformat);
   ...
end;

==Workbook schliessen==

pascal
begin
   ...
   varXLApp.Workbooks[1].Close;
   ...
end;

==Workbook einen Bereich benennen==

pascal
begin
   ...
   varXLApp.Workbooks[1].Names.Add('kmh', '=Tabelle1!$E$14');
   ...
end;

=Worksheet=
==Worksheet einfügen==

pascal
begin
   ...
   varXLApp.WorkBooks[1].WorkSheets.Add; //fügt ein neues WorkSheet hinzu
   ...
end;

==Worksheet einen Bereich benennen==

pascal
begin
   ...
   varXLApp.Workbooks[1].WorkSheets[1].Names.Add('kmh', '=Tabelle1!$E$14');
   ...
end;

==Zellen und Ranges==
===Wert einfügen===

pascal
begin
  ...
  varXLApp.Workbooks[1].WorkSheets[1].Range['E14'].Value := 4;
  ...
end;

=Charts erstellen=

Chart Speicher reservieren

pascal
var
   varDiagramm: OleVariant;

==Chart Speicher freigeben==

pascal
begin
   ...
   varDiagramm := UnAssigned;
   ...
end;

==Chart aktivieren==

pascal
begin
   ...
   varDiagramm.Activate; // Aktiviert das Chart
   ...
end;

==Chart Diagramtyp festlegen==

pascal
begin
   ...
   varDiagramm.ChartType := xlColumnClustered; // Legt den Diagramtyp fest
   ...
end;

==Chart Datenherkunft (Datenquelle) festlegen==

pascal
begin
   ...
   // Legt die Datenherkunft (das Excelsheet und den Bereich im Excelsheet) fest
   varDiagramm.SetSourceData (Source := varXLApp.WorkSheets['Tabelle1'].Range['A1:E13'],
                           PlotBy := xlColumns);
   ...
end;

==Chart Titel==

pascal
begin
   ...
   // Legt fest, dass das Chart einen Titel haben darf
   varXLApp.Workbooks[1].ActiveChart.HasTitle := True;

   // Legt den Namen des Chart Titels fest
   varXLApp.Workbooks[1].ActiveChart.ChartTitle.Text := 'Diagnose';

   // Legt die Hintergrundschriftfarbe des Chart Titels fest
   varXLApp.Workbooks[1].ActiveChart.ChartTitle.Interior.Color := vbGreen;
   ...
end;

==Chart Legende==

pascal
begin
  ...
  //Legt die Beschriftung des ersten Elements der Chartlegende fest
  varXLApp.Workbooks[1].ActiveChart.SeriesCollection(1).Name := '="Eins"';
   ...
end;

==Chart Achsenbeschriftung==

pascal
begin
  ...
  // Legt fest, das die Achse eine Beschriftung hat
  varXLApp.Workbooks[1].ActiveChart.Axes(xlValue).HasTitle:= True;
  // Ermöglicht das Schreiben des Eurozeichens
  wstrUebergabe := UTF8ToUTF16('€');
  varXLApp.Workbooks[1].ActiveChart.Axes[xlValue].AxisTitle
    .Characters.Text := wstrUebergabe;
   ...
end;

==Chart Kategorie==

pascal
begin
  ...
  // Legt fest, dass die Chart Kategorie einen Titel hat
  varXLApp.Workbooks[1].ActiveChart.Axes(xlCategory, xlPrimary).HasTitle := True;
  // Legt den Namen der Chart Kategorie fest
  varXLApp.Workbooks[1].ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Text := 'Jahre';
  // Legt die Schriftfarbe der Chart Kategorie fest
  varXLApp.Workbooks[1].ActiveChart.Axes[xlCategory].TickLabels.Font.Color:= vbBlue;
   ...
end;

==Verschiebt das Chart in ein Worksheet==

pascal
begin
  ...
  varDiagramm.Location (Where:= xlLocationAsObject, Name:= 'Tabelle1');
  ...
end;

From the Free Pascal wiki, page "ExcelAutomation2007plus/de", as it stood on 2020-02-14 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Version 2, zuletzt geändert von WikiArchive .