Hallo Zusammen,
das ist mir noch nie passiert, dass ich garkeine Antwort bekommen habe... Entweder ist die Frage zu blöd, oder das ist wirklich ein schwieriges Thema.
Da ich aber schnellsten eine Lösung brauchte, bin ich jetzt wie folgt vorgegangen:
1. StringGrid nach Excel in eine Vorlage exportiert und angezeigt.
Delphi-Quellcode:
//Inhalt eines TStringGrid nach Excel exportieren und anzeigen
function ExportStringGridToExcel(StringGrid : TStringGrid; Pfad:string; Space:integer) : Boolean;
begin
Result := False;
//Verbindung zu Excel herstellen
ExcelApp := CreateOleObject('Excel.Application');
try
if not VarIsNull(ExcelApp) then
begin
//Neues Workbook öffnen
Workbook :=ExcelApp.Workbooks.open(pfad);
if not VarIsNull(Workbook) then
begin
//Maximalen Bereich bestimmen
MaxCol := Min(StringGrid.ColCount, ExcelApp.Columns.Count);
MaxRow := Min(StringGrid.RowCount, ExcelApp.Rows.Count);
if (MaxRow > 0) and (MaxCol > 0) then
begin
//Worksheet auswählen
Worksheet := Workbook.ActiveSheet;
//Bereich auswählen
Range := Worksheet.Range[RefToCell(1, 1, Space), RefToCell(MaxCol, MaxRow, Space)];
if not VarIsNull(Range) then
begin
//Daten aus Grid holen
Data := VarArrayCreate([1, MaxRow, 1, MaxCol], varVariant);
for Row := 0 to Pred(MaxRow) do
begin
for Col := 0 to Pred(MaxCol) do
begin
Value := StringToVariant(StringGrid.Cells[Col, Row]);
Data[Succ(Row), Succ(Col)] := Value
end;
end;
//Daten dem Excelsheet übergeben
Range.Value := Data;
//Excel anzeigen
Workbook.Activate;
ExcelApp.Visible := True;
Result := True;
end;
end;
end;
end;
finally
Value := UnAssigned;
Data := UnAssigned;
Range := UnAssigned;
Workbook := UnAssigned;
ExcelApp := UnAssigned;
end;
end;
Funktion ist nicht von mir...
2. In der Vorlage einen VBA-Button erstellt, mit dem eine neue Mail mit der Datei im Anhang geöffnet wird.
Delphi-Quellcode:
ActiveSheet.Shapes("CommandButton1").Select
Selection.Delete
Application.Dialogs(xlDialogSendMail).Show Sheets("Tabelle1").Range("B8").Value, "Terminanfrage"
Das ist nicht so, wie ich es eigentlich haben wollte, aber die Kunden sind zufrieden...
In diesem Sinne
Ykcim