Sign in Join
Wiki copytemporary

Revision 2 of 2, by Trev on 2-14-2020. The page as it is now.

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.