![]() |
Mail mit Tabelle aus einem StringGrid
Hallo Zusammen,
ich habe ein in meinem Programm die Anforderung, dass ich den Inhalt eines StringGrids als Excelanhang in einer e-Mail verschicke. Die Mail soll aber nicht automatisch verschickt werden, sonder sich im Editor öffnen. Das habe ich mit dieser Zeile realisiert...
Delphi-Quellcode:
Jetzt möchte der User aber noch die Datei vor dem Versand sehen / öffnen. Gibt es einen Parameter, dass die Datei automatisch geöffnet wird - ich kann sie nämlich aus der erstellten e-Mail heraus vor dem Versand nicht öffnen...
ExcelApp.Dialogs[xlDialogSendMail].Show
Über Anregungen oder vielleicht sogar Lösungen würde ich mich sehr freuen! Vielen Dank Ykcim |
Mail mit Tabelle aus einem StringGrid
Hallo nocheinmal,
das ist kein PUSH, sondern eine echte Frage... Ich habe jetzt stundenlang alles ausprobiert und bin keinen Millimeter weitergekommen. Daher möchte ich nun einen anderen Weg gehen... Ich möchte das StringGrid nicht mehr über eine Exceldatei an den Empfänger verschicken, sondern möchte das StringGrid in die eigentliche Mail kopieren. Leider habe ich keine Ahnung, wie ich das anstellen muss und bitte Euch um Hilfe. Vielen Dank Ykcim |
AW: Mail mit Tabelle aus einem StringGrid
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:
Funktion ist nicht von mir...
//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; 2. In der Vorlage einen VBA-Button erstellt, mit dem eine neue Mail mit der Datei im Anhang geöffnet wird.
Delphi-Quellcode:
Das ist nicht so, wie ich es eigentlich haben wollte, aber die Kunden sind zufrieden...
ActiveSheet.Shapes("CommandButton1").Select
Selection.Delete Application.Dialogs(xlDialogSendMail).Show Sheets("Tabelle1").Range("B8").Value, "Terminanfrage" In diesem Sinne Ykcim |
AW: Mail mit Tabelle aus einem StringGrid
Auch wenn Du nun eine Lösung hast: wenn Du als HTML-Mail verschicken kannst/darfst, dann wäre es auch noch eine Option gewesen, das StringGrid in eine HTML-Tabelle zu exportieren und diese dann in den Mail-Body zu packen.
|
AW: Mail mit Tabelle aus einem StringGrid
Hallo DeddyH,
Das hatte ich versucht, aber nicht geschafft... Wenn Du der Vollständigkeit halber noch für die Nachwelt ein Beispiel hättest, wäre das toll. Eine Mail im Maileditor öffnen und Empfänger, Betreff und eine HTML-Tabelle im Body... Vielen Dank Ykcim |
AW: Mail mit Tabelle aus einem StringGrid
Das Beispiel steht doch bereits in
![]() [edit] Achso, im EMail-Client, das könnte evtl. über ShellExecute funktionieren. [/edit] |
AW: Mail mit Tabelle aus einem StringGrid
Hallo DeddyH,
genau das habe ich nicht hinbekommen... Die Mail soll nicht einfach verschickt werden, sondern mit Outlook zur möglichen weiteren Bearbeitung geöffnet werden... Ich bin daran verzweifelt... Gruß Ykcim |
AW: Mail mit Tabelle aus einem StringGrid
Etwas in der Art könnte helfen
Delphi-Quellcode:
Shellexecute(handle,'Open','mailto:Ziel@irgendeinedomain?subject=Titelzeile&body=Erste Zeile.%0A%0aZweite Zeile.%0A%0ADritte Zeile','','',sw_Show)
|
AW: Mail mit Tabelle aus einem StringGrid
Hallo,
vielen Dank für die Antwort. Das hatte ich bereits ausprobiert. Aber ich brauche die Kombination, dass ich eine Excel Datei als Anhang habe und das ich eine Tabelle in der Mail habe, die auf einem StringGrid basiert. Und daran bin ich verzweifelt... Habe alles Mögliche ausprobiert! Vielen Dank Ykcim |
AW: Mail mit Tabelle aus einem StringGrid
Du hast min. 4 versch. Wege eine EMail zu versenden.
1.) über Excel als Erfüllungsgehilfe Problem: es fehlt die Kontrolle über den genauen Inhalt der Mail Hier noch einige interessante Tricks: ![]() 2.) über SMTP; also direkte Einlieferung der EMail bei einem "Mail-Server" schnell, direkt, aber keine Vorschaufunktion und man muss viel selber machen 3.) über Simple-MAPI hier gibt es eine Vorschaufunktion und der User kann die EMail ggf. noch ändern oder abbrechen 4.) Automatisierung von Outlook über COM/DCOM so kann man Outlook bestmöglichst steuern, aber ohne Outlook geht gar nichts ![]() Wenn du auf dem Weg 1.) nicht weiterkommst könntest du es ja mal mit 4.) probieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz