Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1312to1316
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

per VBA erste Seite von Emails drucken

per VBA erste Seite von Emails drucken
24.05.2013 11:36:07
Emails
Hallo an das Forum...
Ich suche jetzt schon zwei Stunden nach einer Möglichkeit, per VBA nur die erste Seite der zuvor selektierten Emails auszudrucken.
Leider habe ich bis jetzt nicht das passende gefunden, bzw. habe immer wieder gelesen, dass die mailitem.printout methode keine übergabe von parametern erlaubt...
Ich verwende Office 2010, respektive Outlook 2010... Könnte mir da jemand einen Tipp geben, oder ist es einfach nicht möglich, dies per VBA durchzuführen.
Vielen Dank im Voraus und viele Grüße
Benjamin

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
und was ist der Bezug zu Excel ? (owT)
24.05.2013 11:38:38
EtoPHG

AW: und was ist der Bezug zu Excel ? (owT)
24.05.2013 11:45:50
mumpel
Hallo!
Da hast Du in Outlook keine Chance.
Gruß, René

Nachtrag
24.05.2013 11:49:28
mumpel
Es gäbe noch den indirekten Weg. Den Inhalt der Mail in ein Worddokument kopieren und dann in Word drucken.

AW: per VBA erste Seite von Emails drucken
25.05.2013 10:49:22
Emails
Was da beschrieben wird ist alles viel zu umständlich. Zudem fragte der TO nach VBA.
Ein Verweis auf die "Microsoft Forms 2.0 Object Library" und die "Microsoft Word X.0 Objectlibrary" setzen.
Kleiner Nachteil:
1. Word hat andere Seitenränder als die Mails. Hier müsste man gegebenenfalls vor dem Einfügen die Seitenränder anpassen.
2. Einige HTML-Mails sind falsch formatiert. Das macht Umlaute in HTML-Mails nicht mehr darstellbar (wenn Umlaute im Klartext im Quelltext stehen und das falsche Charset gewählt wurde).
Man könnte jetzt noch erweitern und die zu druckenden Seiten per Dialog (Userform) wählen lassen.

Anzeige
Nachtrag
25.05.2013 10:55:15
mumpel
Kleiner Fehler beim letzten Replace ist entstanden (Forenparser)
Korrekt: htmlText = Replace(htmlText, "é", "é")

AW: per VBA erste Seite von Emails drucken
25.05.2013 17:51:29
Emails
Hallo,
also, wenn ich mir den Beitrag durchlese, finde ich dort und verlinkt nach anderswo VBA-Codes.
Kompliziert ist das im ersten Ansatz auch nicht. Der code läuft letztendlich und auf 2010 angepasst auf eine codezeile hinaus:
SendKeys "%(D)(U)(D)%(S)( )(1)%(C)", True
Kompliziert wird es erst dadurch, dass der code unter 2010 nicht korrekt läuft. Ursache ist wohl. dass er z.B. über den Ribbon der Entwicklertools aufgerufen wird und schon der kleinste Ruckler an der Maus beim loslassen dan Ablauf stört. Vorteilhaft bei den SendKeys ist aus meiner Erfahrung die Ausführung des codes in einem gesonderten Makro nach kurzer Zeit mit Application.Ontime. Das gibt es allerdings in Outlook nicht.
Ich habe hier mal was mit API's zusammengeschustert, siehe dazu die Seite http://www.cpearson.com/excel/OnTime.aspx . Voraussetzung ist natürlich das HTML-Format der Nachricht. Als Textnachricht gibt's die Seitenauswahl beim Drucken nicht.
Option Explicit

Public Declare Function SetTimer Lib "user32" ( _
    ByVal HWnd As Long, _
    ByVal nIDEvent As Long, _
    ByVal uElapse As Long, _
    ByVal lpTimerFunc As Long) As Long

Public Declare Function KillTimer Lib "user32" ( _
    ByVal HWnd As Long, _
    ByVal nIDEvent As Long) As Long

Public TimerID As Long
Public TimerSeconds As Single

Sub StartTimer()
    TimerSeconds = 1
    TimerID = SetTimer(0&, 0&, TimerSeconds * 1000&, AddressOf TimerProc)
End Sub

Sub EndTimer()
    On Error Resume Next
    KillTimer 0&, TimerID
End Sub

Sub TimerProc(ByVal HWnd As Long, ByVal uMsg As Long, _
        ByVal nIDEvent As Long, ByVal dwTimer As Long)
    SendKeys "%(D)(U)(D)%(S)( )(1)%(C)", True
    EndTimer
End Sub


 Hoffe, geholfen zu haben. Grüße, André aus G in T  (xls 97-2013)

Anzeige
AW: per VBA erste Seite von Emails drucken
25.05.2013 18:06:42
Emails
Da bevorzuge ich doch meinen Code. Der ist IMHO flexibler. Da kann man je nach Wunsch auch einen anderen Drucker wählen, ohne dafür per Code in die Systemsteuerung eingreifen zu müssen (was ohnehin nicht immer korrekt funktioniert). Und man ist den "Kopf" los, also das was beim Memoformat immer noch an den Anfang gesetzt wird. Man muss auch keine Störungen durch Mausbewegegung oder andere Aktivitäten befürchten. Den Code habe ich jetzt noch ein wenig verfeinert, die Sub lässt sich jetzt flexibel ansprechen.
SendKeys kann ich nur für den Notfall empfehlen. Mir persönlich ist SendKeys zu unsauber und zu anfällig.

Anzeige
AW: per VBA erste Seite von Emails drucken
25.05.2013 18:12:18
Emails
Hallo René,
stellst Du den verfeinerten code auch noch ein oder hab ich was überlesen ? ;-)
 Hoffe, geholfen zu haben. Grüße, André aus G in T  (xls 97-2013)

AW: per VBA erste Seite von Emails drucken
25.05.2013 19:12:22
Emails
Wenn Du möchtest.

Nachtrag Nr. 2
25.05.2013 19:14:18
mumpel
Jetzt ist natürlich wieder das letzte Replace "falsch" dargestellt.

AW: Nachtrag Nr. 2
26.05.2013 07:25:44
schauan
Hallo René,
da ich meinen code direkt in Outlook verwendet habe - hatte ich noch nicht geschrieben - habe ich Deinen auch erst mal dort eingefügt. Allerdings gibt's dort bei mir keine Forms zum verweisen. Na ja, war wohl mein Fehler - wir sind ja hier ein Excelforum ;-)
Aber im Excel bekomme ich den code nicht zum Laufen.
Erster Step war noch der Verweis auf das Microsoft Outlook 14 Objekt.
Allerdings wird jetzt noch der ActiveExplorer bemängelt und ich vermute mal, im anderen Fall kommt auch der Inspector ...
Laufzeitfehler 438: Objekt unterstützt diese Eigenschaft oder Methode nicht.
 Hoffe, geholfen zu haben. Grüße, André aus G in T  (xls 97-2013)

Anzeige
AW: Nachtrag Nr. 2
26.05.2013 10:57:08
mumpel
1. Muss es aber geben. Füge einfach eine Userform ein, dann ist der Verweis auf die "Microsoft Forms 2.0 Object Library" automatisch da.
2. In Excel wird es schwer. Es genügt nicht, einfach nur einen Verweis zu setzen. Du musst dann auch erst noch ein Outlook-Objekt erstellen. 1:1 funktioniert der Code in Excel nicht.
BTW: Ich finde es unsinnig, aus Excel heraus auf eine Mail zugreifen und diese ausdrucken zu wollen. ;-)

Nachtrag
26.05.2013 11:01:26
mumpel
Des Weiteren muss Outlook zwingend aktiv sein. Es genügt nicht, Outlook im Systray zu haben. Solange Outlook im Systray liegt, gibt es keinen Inspector und somit keinen Zugriff auf die Mails.

Anzeige
AW: Nachtrag
26.05.2013 16:15:54
schauan
Hallo René,
ist auf jeden Fall eine feine Lösung.
Ich hab jetzt nochmal im Outlook die Verweise angeschaut, ursprünglich ist bei mir wirklich kein Forms drin. Nur, wenn ich, wie Du schriebst, ein Userform einfüge, ist es "plötzlich" da. Ich hab das auch noch auf einem zweiten Rechner angeschaut, ist genau so.
Ich hab noch eine andere Variante mit Late Binding ausprobiert, da geht es auch. Aber wenn sich der Schlüssel z.B. versionsbedingt oder systemseitig oder warum auch immer ändert, passt es nicht. Wobei
Dim Clipboard      As Object
'Late Binding auf Microsoft Forms 2.0 Object Library 
Set Clipboard = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

 Hoffe, geholfen zu haben. Grüße, André aus G in T  (xls 97-2013)

Anzeige
AW: Nachtrag
26.05.2013 16:37:43
mumpel
Es kann schon sein das die FM20.dll nicht standardmäßig in der Liste erscheint. Da muss man dann über "Durchsuchen" manuell einbinden. Man kann ja vorher im Windows-Explorer schauen wo die Datei gespeichert ist.

Funktioniert
26.05.2013 11:09:52
mumpel
Den ersten Block wie folgt abändern, dann läuft es in Excel. Aber Outlook muss aktiv sein (sagt ja schon die Bezeichnung "ActiveExplorer" und "ActiveWindow").

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige