ich habe ein VBA Programm geschrieben, welches mir Daten in einer Tabelle mit mehreren Spalten aufbereitet. Diese Daten möchte ich dann per Mail (Outlook 2007) versenden.
Das Makro läuft alles wunderbar, allerdings ist die Tabelle so groß, dass man sie nicht auf DinA4 ausdrucken kann. Sie ist einfach zu lang.
Gibt es eine Möglichkeit die Größe zu beeinflussen?
Das Makro besteht aus 2 Sub’s. Die erste generiert die Mail, die 2.Sub markiert den gewünschten Bereich der Tabelle in Excel und wandelt diese in HTML um. Der HTML teil wird dann in der 1.Sub im Body der Email eingefügt.
Falls ihr den Code sehen wollt, einfach sagen, dann poste ich den hier, ansonsten wirds hier zu lang.
Die Sub, die die Tabelle in HTML umwandelt hab ich hier gefunden: http://www.ms-office-forum.net/forum/showthread.php?..
Mein Code sieht ähnlich aus, wurde halt nur auf meine Bedürfnisse angepasst.
Wäre super, wenn mir da jemand helfen könnte. Vielleicht gibts auch ne andere Lösung. Ich möchte nur nicht, dass die Tabelle im Anhang gesendet wird. Sie sollte schon in der Email selbst drin sein, also im Body.
Keine Ahnung, verstehe das Problem nicht so ganz, warum soll es auf eine DIN A4 Seite passen? Sollte die Größe nicht durch die Seitenumbrüche eingestellt sein? Was ist es für ein Ausgabeformat (PDF,Excel,…)?
Gerade das will ich ja vermeiden, es soll kein Anhang generiert werden, sondern die Tabelle wird direkt in der Email dargestellt:
Text Text Text
Tabelle
Text Text Text
Die Größe der Tabelle kann ich in Excel nicht beeinflussen (Seitenumbrüche oder Druckbereich). Das müsste durch HTML wahrscheinlich geschehen.
In erster Linie soll die Email mehrere Angaben zu einem Projekt übermitteln. Dem Empfänger soll es möglich sein, die Daten direkt zu sehen. Er soll aber auch die Möglichkeit haben die Email, bei mehreren Positionen, auszudrucken, damit er nicht immer zwischen Emailprogramm und SAP umschalten muss.
so ganz verstehe ich das Problem nicht. Wenn eine Tabelle zu lang ist dann ist sie halt zu lang. Bei geringen Überschreitungen der Seitengröße kann man in Excel angeben, dass beim Druck auf eine Seite scaliert wird, aber hier werden ja die Daten aus Excel extrahiert und wohl in einem Mail im HTML-Format verschickt. Wieso spielt hier die Seitenlänge eine Rolle? Und wie macht man in HTML eine Seitensteuerung (m.W. gar nicht, das widerspricht HTML)? Auch wenn Dir das nicht gefällt, ich würde die Tabelle als Anhang im PDF-Format versenden, da kann man Schriftgröße und Seitenvorschübe beliebig steuern.
Es gibt bei Deiner Vorgehensweise noch ein Problem: HTML-Mails unterstützt nicht jeder Server, was machen die Empfänger, sie erhalten ja reinen ASCII-Code?
Tut mir leid, eine bessere Lösung habe ich nicht.
Rainer
Was würdest Du in Excel tun, wenn Du die Tabelle auf einer Seite ausdrucken wolltest? Vermutlich über Datei // Seite einrichten den Druckbereich anpassen.
Keine Ahnung ob das auf dem Weg nach html auch möglich ist, oder in html angepasst werden kann.
ist Dein Excel-Ausdruck zu groß oder Dein E-Mail-Ausdruck?
Für Excel kann man die Seite einrichten -> Anpassen auf 1 Seiten hoch und 1 Seiten breit. Oder den Druckbereich festlegen. Dies birgt jedoch die Gefahr, dass die Daten sehr klein werden und damit unleserlich. Ggf. muss das Papierformat auf A3 geändert werden (Ist die Tabelle nur „ein bißchen zu groß“ oder deutlich zu groß?). Dies kann man alles auch per VBA einstellen.
Im E-Mail Body müsste man sonst das eingebettete Objekt (Bild?) zu fassen bekommen und es dann skalieren. Weiß ich aber nicht, ob dies so geht.
Sollte die Tabelle durch die Funktion RangeToHTML tatsächlich als HTML-Tabelle dargestellt werden, muss man diese Optimieren - wahrscheinlich in oder nach der OpenTextStream-Methode.
Damit kenne ich mich aber leider nicht aus.
Also,
einen Dateianhang in Form von Excel oder PDF will ich eigentlich vermeiden.
Meine Tabelle lässt sich in Excel natürlich so scalieren, dass ich alle Daten im Querformat auf eine Seitenbreite bekomme. Das geht über die Druckoptionen.
Die Daten sind dann auch noch gut lesbar.
Mein Problem ist, dass die Tabelle aus Excel in HTML umgewandelt wird und dann ja in den Body der Email kommt. Dort aber logischerweise in Originalgröße (also nicht fit to page).
Meine Frage ist, ob es möglich ist die Breite der einzelnen Spalten der HTML Tabelle zu beeinflussen. In HTML ist es ja möglich die Schriftgröße und die Breite der Tabelle über fontsize und width zu beeinflussen, allerdings ist das mit der Function Rangetohtml wohl nicht möglich.
Falls nicht gerade jemand ne neue Function hat, die genau das kann, muss ich wohl damit leben, dass ich die Tabelle in Excel etwas kleiner mache. Allerdings passt das immer noch nicht ganz.
Es sollte auch keine Probleme mit der Kompatibilität untereinander geben, da das Programm Werksintern läuft, also gleiches Excel und gleiches Outlook bei allen.
Hallo Markus!
Mit Sicherheit gibt es Möglichkeiten, die Größe zu beeinflussen:
Du kannst die Zeilenhöhe ändern, ehe du die Tabelle einsetzt
Du kannst den Zoom der Tabelle ändern, die Du eingesetzt hast
Du kannst den Zoom der Mail vor dem ausdrucken ändern.
Wenn du z.b. eine Tabelle kopierst und in eine leere Mail einfügst, bekommst Du am unteren rechten Rand der Tabelle ein kleines Kästchen, mit dem du Die Tabelle graß und klein ziehen kannst. Das gleiche muß mit makro auch gehen.
Sorry, ich habe in dem Bereich noch nicht gearbeitet, und müßte selbst erst ausprobieren, wie genau. und dazu habe ich im moment leider keine Zeit. Aber wenn du weißt, wie das Objekt heißt, kannst du ja über den Object-Explorer dir die Eigenschaften ansehen, und dann findest ddu sicherlich die richtigen Angfaben.
Hab mal die Größen der Tabelle in Excel selbst etwas kleiner gemacht, also bevor der Export in die Mail gestartet wird. Passt jetzt etwas besser. Denke, dass das so momentan reicht.
Sorry, aber mehr kenne ich Outlook auch nicht, als den vorherigen Tipp mit (sofern überhaupt möglich) Austausch des HTML-Codes im Nachgang der Erzeugung der Outlook Nachricht. So müsste man wahrscheinlich den Body-Code der E-Mail Nachricht ersetzen, ähnlich der Replace-Anweisung in Excel: Replace