Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Email-Format eingeganger Emails verändern
Gehe zu Seite Zurück  1, 2
zurück: Abwesenheitsassistenten über makro / vba aktivieren weiter: Outlook und die Autoarchivierung Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Bitte Status wählen ! Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Joch
Im Profil kannst Du frei den Rang ändern


Verfasst am:
12. Okt 2005, 14:36
Rufname:

AW: Email-Format eingeganger Emails verändern - AW: Email-Format eingeganger Emails verändern

Nach oben
       

Hallo,
danke auch das hab ich hingekriegt.
Jetzt wollt ich beim Öffnen einer Mail den Ablauf starten, aber ich weiß nicht wie ich den Verweis auf das MailItem hinkriege da es ja bei jeder Mail ausgeführt werden soll. Momentan wird der Sub überhaupt nicht ausgeführt.

Code:

Private WithEvents a_oMail As Outlook.MailItem
Private Sub a_oMail_Open(Cancel As Boolean)
    MsgBox ("öffnen")
End Sub


Ich glaub mir fehlt das "Set", aber ich hab keine Ahnung was und wo ich das hinschreiben soll.
Wahrscheinlich weißt du wie Wink

Danke
Jochen
Michael Bauer
MVP Outlook


Verfasst am:
13. Okt 2005, 15:08
Rufname:
Wohnort: Vollersode


AW: Email-Format eingeganger Emails verändern - AW: Email-Format eingeganger Emails verändern

Nach oben
       

Jochen, das Öffnen eines Elementes bekommst Du über das NewInspector-Ereignis mit. Da das für jeden Inspector gefeuert wird, mußt Du im Ereignis den Typ des Inspector.Currentitem prüfen.

Das kannst Du einmal mit der Class-Eigenschaft machen, die jedes *Item unterstützt. Die von mir bevorzugte Methode, weil es sicherer und schneller ist, sieh so aus:
Code:

If TypeOf variable Is Outlook.MailItem Then ...

_________________
Michael Bauer
Tools für Microsoft Outlook
Joch
Im Profil kannst Du frei den Rang ändern


Verfasst am:
14. Okt 2005, 12:21
Rufname:

AW: Email-Format eingeganger Emails verändern - AW: Email-Format eingeganger Emails verändern

Nach oben
       

Hallo Michael,
danke für den Hinweis. Es funktioniert auch soweit, allerdings bewirkt die Änderung des Email-Formats nichts. Er merkt es zwar, denn er fragt beim Beenden ob die Änderungen gespeichert werden sollen, aber in der Anzeige bleibt es auf Plaintext. Ich bräuchte wahrscheinlich so eine Art "Aktualisieren", oder?

Hier der Code zum NewInspector-Ereignis:
Code:
If TypeOf Inspector.CurrentItem Is Outlook.MailItem Then
       Dim mail As Outlook.MailItem
       Set mail = Inspector.CurrentItem
       If mail.BodyFormat = olFormatPlain Then
            mail.BodyFormat = olFormatRichText
       End If
   End If


Gruß Jochen
Michael Bauer
MVP Outlook


Verfasst am:
14. Okt 2005, 16:58
Rufname:
Wohnort: Vollersode

AW: Email-Format eingeganger Emails verändern - AW: Email-Format eingeganger Emails verändern

Nach oben
       

Jochen, versuche es mal, nach der Änderung mit mail.Save.
_________________
Michael Bauer
Tools für Microsoft Outlook
Joch
Im Profil kannst Du frei den Rang ändern


Verfasst am:
17. Okt 2005, 09:58
Rufname:


AW: Email-Format eingeganger Emails verändern - AW: Email-Format eingeganger Emails verändern

Nach oben
       

Joch am 17. Okt 2005 um 08:15 hat folgendes geschrieben:
Hi,
mail.save ändert auch nichts.

Hab mir überlegt, dass es vielleicht über einen Timer gehen könnte. Damit die Umwandlung und Smarttagerkennung erst durchgeführt wird, nachdem die Mail richtig geöffnet wurde (also ein paar Sekunden nachdem das NewInspector-Ereignis auftritt). Wenn ich nun einen Timer in den Code des NewInspector-Ereignis setze, wird leider die Mail auch erst richtig geöffnet, nachdem der Timer abgelaufen ist. Gibt es da was, zum Ausführen des Codes erst nachdem die Mail wirklich geöffnet ist?
Michael Bauer
MVP Outlook


Verfasst am:
17. Okt 2005, 11:10
Rufname:
Wohnort: Vollersode

AW: Email-Format eingeganger Emails verändern - AW: Email-Format eingeganger Emails verändern

Nach oben
       

Gute Idee: Bei neuen Nachrichten klappt es mit dem Timer. Bei empfangenen Mail geht´s leider nicht.

Vielleicht könntest Du folgendes machen:
- Setze wie gehabt BodyFormat auf RTF
- Speichere die Mail als rtf-Datei
- Öffne die Datei in Word.

Dann hast Du das korrekte Format in Word und bist unabhängig davon, welchen Mail-Editor der User eingestellt hat.

_________________
Michael Bauer
Tools für Microsoft Outlook
Joch
Im Profil kannst Du frei den Rang ändern


Verfasst am:
17. Okt 2005, 16:29
Rufname:

AW: Email-Format eingeganger Emails verändern - AW: Email-Format eingeganger Emails verändern

Nach oben
       

Hi,
der Vorschlag ist nicht schlecht, aber er erfüllt meine Vorgaben, von dem was ich entwickeln soll, nicht ganz.

Jetzt bin ich so knapp am Ziel, wenn ich nur meine Aktion durchführen könnte, wenn die Mail geöffnet ist. Ich habs jetzt noch mal probiert, die Ereignisse NewInspector, Open und Read sind alle zu früh, da kann ich noch nicht auf ActiveInspector zugreifen, weil dieser ja auch wirklich noch nicht offen ist. Und wenn ich einen Timer setze, wird die Mail erst nach dessen Ablauf angezeigt, der Timer läuft also leider nicht im Hintergrund sondern blockiert auch das Öffnen.
Gibt es eine Möglichkeit, meinen Code automatisch auszuführen, wenn die Mail geöffnet (also wirklich angezeigt) ist (wie über meinen Button, der ja funktioniert). Das muss doch irgendie gehen?!?
Michael Bauer
MVP Outlook


Verfasst am:
17. Okt 2005, 21:50
Rufname:
Wohnort: Vollersode

AW: Email-Format eingeganger Emails verändern - AW: Email-Format eingeganger Emails verändern

Nach oben
       

Du nutzt anscheinend keinen wirklichen Timer. Google mal nach "modTimer.bas". Ich habe ein Beispiel für einen API-Timer gepostet.
_________________
Michael Bauer
Tools für Microsoft Outlook
Joch
Im Profil kannst Du frei den Rang ändern


Verfasst am:
18. Okt 2005, 11:25
Rufname:

AW: Email-Format eingeganger Emails verändern - AW: Email-Format eingeganger Emails verändern

Nach oben
       

Hi,
ich habe mir grad das Beispiel von dir kopiert. Ich rufe den Timer auf mit "modTimer.EnableTimer 5, Me" in einem Event, z.B. NewInspector, ist das korrekt? Wo schreibe ich dann rein, was passieren soll, wenn die 5 Sekunden um sind? Wird der Timer dann automatisch beendet oder muss ich dann noch "Timer()" aufrufen?

Danke
Jochen
Michael Bauer
MVP Outlook


Verfasst am:
18. Okt 2005, 11:28
Rufname:
Wohnort: Vollersode

AW: Email-Format eingeganger Emails verändern - AW: Email-Format eingeganger Emails verändern

Nach oben
       

Der Timer ruft die DieseOutlookSitzung.Timer () auf. Dort kannst Du als erstes den Timer abschalten mit modTimer.DisableTimer und dann alles weitere festlegen.

Der Interval wird in ms angegeben. 5 Sekunden = 5000ms.

_________________
Michael Bauer
Tools für Microsoft Outlook
Joch
Im Profil kannst Du frei den Rang ändern


Verfasst am:
18. Okt 2005, 14:09
Rufname:

AW: Email-Format eingeganger Emails verändern - AW: Email-Format eingeganger Emails verändern

Nach oben
       

Super, geht.
Witzig ist, dass es selbst mit einer Zeit von 1 ms funktioniert (aber der direkte Aufruf ohne Timer nicht).
Jetzt hab ich noch das Problem, dass ich nicht weiß wie ich zwischen schon bestehenden Mails und neuen Emails unterscheiden kann. Meine Konvertierung usw. soll ja nicht durchgeführt werden, wenn man eine neue Mail erstellt. Die Ereignisse wie "parent" und "saved" sind bei allen Mails leider gleich und das NewInspector-Event springt halt immer an.

Gruß Jochen
Michael Bauer
MVP Outlook


Verfasst am:
18. Okt 2005, 15:29
Rufname:
Wohnort: Vollersode

AW: Email-Format eingeganger Emails verändern - AW: Email-Format eingeganger Emails verändern

Nach oben
       

1 ms erreichst Du nicht wirklich. Die Auflösung hängt vom OS ab. Bei NT-Systemen liegt´s AFAIK bei ~10 oder 20ms, bei Win98 bei ~40ms.

Ein neues Element erkennst DU daran, dass es noch nicht gespeichert wurde. In dem Fall ist EntryID = "".

_________________
Michael Bauer
Tools für Microsoft Outlook
Joch
Im Profil kannst Du frei den Rang ändern


Verfasst am:
18. Okt 2005, 17:43
Rufname:

AW: Email-Format eingeganger Emails verändern - AW: Email-Format eingeganger Emails verändern

Nach oben
       

Super, hat funktioniert. Jetzt funktioniert soweit alles, nur ein Problem ist jetzt wieder aufgetaucht: Es werden die veränderten Mails gespeichert, obwohl die Einstellung auf olDiscard steht. Wenn ich auf olPromptForSave stelle fragt er nach, aber bei olDiscard ist die Mail gespeichert, ich versteh es nicht.
Deshalb dachte ich, ich poste mal den ganzen Code (außer dem Timer), vielleicht fällt dir ja auf woran es liegt.
Das "Set m_oMail = {aktuelle Mail}" habe ich an verschiedenen Stellen versucht, aber es ändert sich nichts, egal wo ich es hinsetze.

Code:


Private WithEvents m_oMail As Outlook.MailItem
Public WithEvents myOlInspectors As Outlook.Inspectors
Dim myOlApp As New Outlook.Application

'wird beim Starten von Outlook ausgeführt
Private Sub Application_Startup()
    Call Initialize_handler
End Sub

'wird aufgerufen beim Start von Outlook
Public Sub Initialize_handler()
    Set myOlInspectors = myOlApp.Inspectors
End Sub

Private Sub myOlInspectors_NewInspector(ByVal Inspector As Outlook.Inspector)

    If TypeOf Inspector.CurrentItem Is Outlook.MailItem Then
        Dim mail As Outlook.MailItem
        Set mail = Inspector.CurrentItem
        If mail.EntryID <> "" Then 'wenn nicht neue Email
            'Set m_oMail = mail 'damit diese Mail beim Schließen nicht gespeichert wird
            modTimer.EnableTimer 1, Me 'Timer starten mit 1 ms
        End If
    End If

End Sub

'wird aufgerufen wenn der Timer abgelaufen ist
Public Sub Timer()
  modTimer.DisableTimer
  Call smarttag 'eigentlichen Ablauf starten
End Sub

Private Sub smarttag()

    Dim oMail As Outlook.MailItem
    Set oMail = Application.ActiveInspector.CurrentItem
   
    'Plaintext in Richtext umwandeln
    If oMail.BodyFormat = olFormatPlain Then
        oMail.BodyFormat = olFormatRichText
    End If
     
    'Wenn Richtext dann Smarttags erkennen
    If oMail.BodyFormat = olFormatRichText Then
        Dim oDoc As Word.Document
        Set oDoc = Application.ActiveInspector.WordEditor
        oDoc.Application.ActiveDocument.RecheckSmartTags
     End If
    Set m_oMail = oMail 'damit diese Mail beim Schließen nicht gespeichert wird

End Sub

'die geänderte Mail beim Schließen nicht speichern
Private Sub m_oMail_Close(Cancel As Boolean)
  m_oMail.GetInspector.Close olDiscard
  Set m_oMail = Nothing
End Sub


Joch
Im Profil kannst Du frei den Rang ändern


Verfasst am:
24. Okt 2005, 10:30
Rufname:

AW: Email-Format eingeganger Emails verändern - AW: Email-Format eingeganger Emails verändern

Nach oben
       

Ich hab jetzt noch mal ewig rumprobiert, aber hab den Fehler nicht gefunden. Bei olPrompForSave wird gefragt und wenn ich Nicht speichern wähle, wird auch nicht gespeichert. Aber wenn ich olDiscard nehme wird die Mail gespeichert.
Hast Du eine Ahnung, woran das liegen kann?

Gruß Jochen
Michael Bauer
MVP Outlook


Verfasst am:
24. Okt 2005, 11:10
Rufname:
Wohnort: Vollersode


AW: Email-Format eingeganger Emails verändern - AW: Email-Format eingeganger Emails verändern

Nach oben
       

Moin,

habe ich leider nicht. Evt. kannst Du mit einer Kopie der Mail arbeiten und die abschließend löschen?

_________________
Michael Bauer
Tools für Microsoft Outlook
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite Zurück  1, 2
Diese Seite Freunden empfehlen

Seite 2 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Outlook Mail: Keine Spam emails Übertragen 3 Mirko.hh 1822 25. Nov 2005, 16:43
Mirko.hh Keine Spam emails Übertragen
Keine neuen Beiträge Outlook Mail: Emails später senden??? 9 Gast 12941 10. Nov 2005, 19:25
jazz Emails später senden???
Keine neuen Beiträge Outlook Mail: Emails nach Festplattenabsturz wieder importieren 1 LoneRider 1029 30. Sep 2005, 10:31
kraemer Emails nach Festplattenabsturz wieder importieren
Keine neuen Beiträge Outlook Mail: Schriftfarbe verändern 2 A_Abels 911 27. Sep 2005, 08:18
Gast Schriftfarbe verändern
Keine neuen Beiträge Outlook Mail: Wo werden die E-Mails gespeichert? 3 Londo 13675 20. Sep 2005, 08:15
Christi@n Wo werden die E-Mails gespeichert?
Keine neuen Beiträge Outlook Mail: eMails mit 2 Rechnern 3 Hingo 3859 11. Sep 2005, 16:40
wolf-it eMails mit 2 Rechnern
Keine neuen Beiträge Outlook Mail: eingegangene e-mails direkt ins adressbuch? 1 fanni 2559 10. Sep 2005, 10:27
Christi@n eingegangene e-mails direkt ins adressbuch?
Keine neuen Beiträge Outlook Mail: Wie verschiebe ich versandte Emails automatisch in Ordner? 4 pingo 1144 08. Jun 2005, 12:19
pingo Wie verschiebe ich versandte Emails automatisch in Ordner?
Keine neuen Beiträge Outlook Mail: emails+ordner auf cd speichern und auf anderem pc einlesen 2 Gast 1252 24. März 2005, 20:17
Gast emails+ordner auf cd speichern und auf anderem pc einlesen
Keine neuen Beiträge Outlook Mail: Standard Dateiendung bei Speichern von E-Mails ändern 5 S.Thielen 4414 02. Feb 2005, 12:04
kraemer Standard Dateiendung bei Speichern von E-Mails ändern
Keine neuen Beiträge Outlook Mail: Emails nach China werden nicht gesendet !!! 1 Drunken 1835 29. Okt 2004, 10:53
tinaXX Emails nach China werden nicht gesendet !!!
Keine neuen Beiträge Outlook Mail: Emails nur über t-online adresse 1 Gast 625 06. Sep 2004, 20:12
macdeal Emails nur über t-online adresse
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Word Serienbriefe