Ein paar allgemeine Dinge, die einem das Leben da leichter machen können:
Auch für Workbook und Ranges OLEVariant-Variablen benutzen, und dann deine Formatierungen direkt auf das Range-Objekt anwenden, anstatt immer erst zu Selecten und dann an die Selection zu gehen. Spart Zeit.
Delphi-Quellcode:
procedure TMAin.Xls_To_Color(AXLSFile:
string; Zeile : integer; Farbe :
string; Text : integer);
const
xlCellTypeLastCell = $0000000B;
var
Excel, Sheet: OLEVariant;
wb, rg: OLEVariant;
Puffer :
string;
Color : integer;
begin
deletefile('
C:\Users\' + login + '
\Documents\RESUME.XLW');
if farbe = '
Weiß'
then Color := 0;
if farbe = '
Rot'
then Color := 3;
if farbe = '
Grün'
then Color := 10;
if farbe = '
Blau'
then Color := 41;
if farbe = '
Gelb'
then Color := 6;
// Create Excel-OLE Object
Excel := CreateOleObject('
Excel.Application');
try
// Hide Excel
Excel.Visible := False;
// Open the Workbook
wb := Excel.Workbooks.Open(AXLSFile);
// Sheet := XLApp.Workbooks[1].WorkSheets[1];
Sheet := wb.WorkSheets[1];
//Puffer := inttostr(Zeile+1)+':'+inttostr(Zeile+1);
//Excel.Range[Puffer].Select;
rg := Sheet.columns[Zeile+1].EntireColumn
if text = 1
then rg.Font.colorindex := Color
else rg.Interior.ColorIndex := Color;
// Oberste Zeile Fett und Grau
//Excel.Range[inttostr(1)+':'+inttostr(1)].Select;
rg := Sheet.columns[1].EntireColumn
rg.Font.FontStyle := '
Bold';
rg.Interior.ColorIndex := 15 ;
//Rahmen zeichnen
rg=Excel.Range[Sheet.Cells(1,1),Sheet.Cells(Sheet.UsedRange.Rows.Count,26)]
//Excel.Range['A1:' + 'AZ' + inttostr(Display.RowCount - 1)].select;
//Excel.Selection.Borders[xlEdgeLeft].LineStyle := xlContinuous;
finally
// Save file and Quit Excel
if not VarIsEmpty(Excel)
then
begin
Excel.save;
Excel.Quit;
Excel := Unassigned;
Sheet := Unassigned;
end;
end;
end;
Excel-Konstanten wie xlContinuous einfach in Excel nachschauen, was die für einen Wert haben und dann im Programm selber als Const anlegen.