Einzelnen Beitrag anzeigen

Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Mail mit Tabelle aus einem StringGrid

  Alt 2. Sep 2011, 09:48
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
Patrick
  Mit Zitat antworten Zitat