Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Weiterl.&löschen per Makro, Empfänger aus Betreff ausles
zurück: Eingehende EMail in zweitem Postfach automatisch verschieben weiter: Benutzernamen im Betreff erkennen und verarbeiten möglich ? Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Stb
Im Profil kannst Du frei den Rang ändern


Verfasst am:
26. März 2014, 17:41
Rufname:

Weiterl.&löschen per Makro, Empfänger aus Betreff ausles - Weiterl.&löschen per Makro, Empfänger aus Betreff ausles

Nach oben
       Version: Office 2007

Hallo liebe VBA Freunde (-;

nachdem ich hier zuletzt super Hilfe bekommen habe steigt der Bedarf an komfortablen Lösungen für einige "Kleinigkeiten"...
Das ist meine Anforderung und ich habe wieder keine Ahnung wie man das geschlossen angeht. Meine Recherche ergab lediglich Ansätze zu Teilaspekten.

Makro wird über Button in Outlook gestartet, nicht in einer Mail.
Das Makro bezieht sich auf die aktuell markierte Mail in einem Ordner eines Postfachs.
1. Es öffnet die markierte Mail zur Weiterleitung
2. Es liest den Benutzernamen aus dem Betreff aus und fügt diesen als
Mailadresse im Empfängerfeld ein. Dazu muss „@gmx.de“ an den Benutzernamen angehängt werden.
Betreff: "AW: TEST/ Heinz.Mueller/140313/104532"
Resultierende Empfängeradresse: "Heinz.Mueller@gmx.de"
3. Es schreibt einen Standardtext in die Mail.
„Hallo, dein Test wurde bearbeitet.“
4. Es versendet die Mail und sorgt dafür dass sie nicht in „gesendete Ordner“ verschoben wird. (DeleteAfterSubmit ?)
5. Es löscht die noch immer markierte Mail im Ordner des Postfachs.

Ist das für Jemanden zufällig kein Problem und hat Lust mir zu helfen ?
Würde mich echt weiterbringen.

Liebe Grüße,
Steven
Stb
Im Profil kannst Du frei den Rang ändern


Verfasst am:
31. März 2014, 17:10
Rufname:


AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au - AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au

Nach oben
       Version: Office 2007

Hi,
nach einigem Probieren konnte ich die Punkte 4.+5. selbst lösen.
Punkt 1. entfällt weil ich davon ausgehe die Mail geöffnet zu haben und dann per Button folgendes Makro unter "ThisOutlookSession" zu starten.

Code:
Sub Weiterleiten()
Dim objMail_In As Outlook.MailItem
Dim objMail_Out As Outlook.MailItem
Set objMail_In = ActiveInspector.CurrentItem
Set objMail_Out = objMail_In.Forward
With objMail_Out
.To = "Test@gmx.de"                             ' Empfängeradresse
.Subject = "weitergeleitet: " & objMail_In.Subject      ' Zusatz in Betreffzeile
.DeleteAfterSubmit = True                               ' Nicht im gesendete Postfach speichern
.Send                                                   ' Weiterleiten
ActiveInspector.Close olDiscard                         ' Schließt geöffnete Mail
objMail_In.Delete
End With
End Sub


Mir fehlt jetzt noch Punkt 2.+3. und ich habe keinen Plan wie man das macht.
Ich probiere es weiter und werde berichten, bin aber natürlich auch froh wenn mir jemand hilft !!!

Danke,
Steven
Michael Bauer
MVP Outlook


Verfasst am:
06. Apr 2014, 21:57
Rufname:
Wohnort: Vollersode

AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au - AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au

Nach oben
       Version: Office 2007

Hallo,

sieh Dir die instr-Funktion an, damit kannst Du die Positionen der beiden Zeichen ("/") finden, die den Anfang und das Ende des gesuchten Textteils markieren. Und dann kannst Du diesen mit der Mid-Funktion lesen.

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


Verfasst am:
07. Apr 2014, 11:17
Rufname:

AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au - AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au

Nach oben
       Version: Office 2007

Hi Michael,

ich habe mir die Funktionen angesehen und mit einigen praktischen Beispielen im Netz verglichen.
Mein Ergebnis:

Code:
Sub Weiterleiten()

Dim objMail_In As Outlook.MailItem
Dim objMail_Out As Outlook.MailItem

Dim aPos As Integer                                             ' Definiert aPos (Textbegin) als Integer
Dim bPos As Integer                                             ' Definiert bPos (Textende) als Integer
aPos = InStr(1, objMail_In.Subject, "/", CompareMethod.Text)    ' Gibt die "Beginposition" in aPos zurück
bPos = InStr(13, objMail_In.Subject, "/", CompareMethod.Text)   ' Gibt die "Endposition" in bPos zurück
Length = bPos - aPos - 1                                        ' Berechnet die Länge

benutzer = Mid(objMail_In.Subject + 1, aPos, Length)            ' Liest von aPos+1 bis bPos aus dem Betreff aus und schreibt in "benutzter"

Set objMail_In = ActiveInspector.CurrentItem
Set objMail_Out = objMail_In.Forward

With objMail_Out
.To = benutzer & "@gmx.de"                                      ' Empfängeradresse
.Subject = "Bestellung ist erfolgt: " & objMail_In.Subject      ' Zusatz in Betreffzeile
.DeleteAfterSubmit = True                                       ' Nicht im gesendete Postfach speichern
.Send                                                           ' Weiterleiten
ActiveInspector.Close olDiscard                                 ' Schließt geöffnete Mail
objMail_In.Delete                                               ' Löscht die gerade geschlossene Mail im Posteingang/Ordner
End With

End Sub


Nun funktioniert leider mein vorheriger Code nicht mehr. Die Fehlermeldung in VBA besagt: "Objektvariable oder With-Blockvariable nicht festgelegt"
Vielleicht magst Du Dir den Code einmal ansehen, wo ist/sind der/die Fehler ?

Vielen Dank schon einmal,
Steven
Michael Bauer
MVP Outlook


Verfasst am:
07. Apr 2014, 12:07
Rufname:
Wohnort: Vollersode


AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au - AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au

Nach oben
       Version: Office 2007

Hallo,

Objektvariablen (alles, was mit Set... beginnt) müssen erst gesetzt werden, bevor Du auf eine Eigenschaft des Objekts zugreifen kannst.

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


Verfasst am:
07. Apr 2014, 17:28
Rufname:

AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au - AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au

Nach oben
       Version: Office 2007

Hi,

mensch kommt mir das kompliziert vor.
Also, nach einigem Lesen glaube ich jetzt verstanden zu haben dass Dim... der Variablen sagt was Sie ist. (Integer, Text, etc.)
Es ist in dem Moment aber noch eine Hülle und in Ihr steht kein bestimmter Wert.

Um nun einen Wert in die Hülle zu schreiben benutzt man Set...
Demnach sieht mein Code wie folgt aus, verlangt beim Compelieren aber immer einen Objekt für Set aPos=... :

Code:
Sub Weiterleiten()

Dim objMail_In As Outlook.MailItem
Dim objMail_Out As Outlook.MailItem
Dim aPos As Integer                                             ' Deklariert aPos (Textbegin) als Integer
Dim bPos As Integer                                             ' Deklariert bPos (Textende) als Integer
Dim Length As Integer
Dim benutzer As Integer

Set objMail_In = ActiveInspector.CurrentItem
Set objMail_Out = objMail_In.Forward


Set aPos = InStr(1, objMail_In.Subject, "/", CompareMethod.Text)    ' Gibt die "Beginposition" in aPos zurück
Set bPos = InStr(13, objMail_In.Subject, "/", CompareMethod.Text)   ' Gibt die "Endposition" in bPos zurück
Set Length = bPos - aPos - 1                                        ' Berechnet die Länge
Set benutzer = Mid(objMail_In.Subject + 1, aPos, Length)            ' Liest von aPos+1 bis bPos aus dem Betreff aus und schreibt in "benutzter"


With objMail_Out
.To = benutzer & "@gmx.de"                                      ' Empfängeradresse
.Subject = "Bestellung ist erfolgt: " & objMail_In.Subject      ' Zusatz in Betreffzeile
.DeleteAfterSubmit = True                                       ' Nicht im gesendete Postfach speichern
.Send                                                           ' Weiterleiten
ActiveInspector.Close olDiscard                                 ' Schließt geöffnete Mail
objMail_In.Delete                                               ' Löscht die gerade geschlossene Mail im Posteingang/Ordner
End With

End Sub


Ich komme an dieser Stelle wieder nicht weiter, hast Du noch einen Tipp ?
Ist Integer überhaupt richtig und braucht "benutzer" nicht "text" oder so etwas ?

Lieben Dank,
Steven
Michael Bauer
MVP Outlook


Verfasst am:
08. Apr 2014, 08:16
Rufname:
Wohnort: Vollersode

AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au - AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au

Nach oben
       Version: Office 2007

Hallo,

Zitat:
Also, nach einigem Lesen glaube ich jetzt verstanden zu haben dass Dim... der Variablen sagt was Sie ist. (Integer, Text, etc.)
Es ist in dem Moment aber noch eine Hülle und in Ihr steht kein bestimmter Wert.
Das stimmt. VB(A) deklariert jede Variable mit einem Standardwert. Es gibt 0, "", Empty und Nothing.
Zitat:
Um nun einen Wert in die Hülle zu schreiben benutzt man Set...
Set wird nur für Objektvariablen verwendet. Integer, Long, String, Date etc. sind in VB keine Objekte. Das Outlook.MailItem z.B. ist ein Objekt. D.h. nur hier wird Set verwendet.

Die Fehlermeldungen sagen Dir das auch. "Set aPos" verlangt ein Objekt, während aPos aber als Integer deklariert ist. Im vorherigen Code hattest Du objMail_In verwendet (indem Du dessen Subject-Eigenschaft lesen wolltest), bevor es mit Set auf ein Objekt (in diesem Fall eine Email) gesetzt wurde. Und der Versuch, den Betreff von Nothing auszulesen, muss eben einen Fehler auslösen; woher sollte denn bekannt sein, für welche Email Du den Betreff haben willst?

Wenn Du zur vorletzten Code-Version zurückgehst und das nochmal laufen läßt, wird Dir die fehlerhafte Zeile angezeigt. Das ist die Zeile, wo erstmals auf die Variable, deren Wert noch Nothing ist, zugegriffen wird. Und vor diese Zeile mußt Du eben mit Set... die Variable auf einen gültigen Wert setzen.

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


Verfasst am:
09. Apr 2014, 14:27
Rufname:

AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au - AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au

Nach oben
       Version: Office 2007

Hi,

Dein Hinweis hilft mir und verwirrt mich zugleich (-;
Ich habe gefühlt hundert Kombinationen mit Dim und Set ausprobiert, nichts funktioniert. Stelle ich überhaupt die richtigen Fragen ?

Macht es Sinn mit Dim zu sagen z.B. aPos ist ein Integer und mit Set aPos bezieht sich auf die gerade geöffnete Mail (ActiveInspector.CurrentItem) ?
Kommt VB damit klar in der InStr() Funktion objMail_In.subject zu verwenden obwohl vorher noch der Set Befehl dazu fehlt ?

Ich weiß nicht was ich fragen soll um zum Ziel zu kommen.

Grüße,
Steven


Code:
Sub Weiterleiten()

Dim objMail_In As Outlook.MailItem
Dim objMail_Out As Outlook.MailItem

Dim aPos As Integer                                             ' Definiert aPos (Textbegin) als Integer
Dim bPos As Integer                                             ' Definiert bPos (Textende) als Integer
[b]Set aPos = XYZ
Set bPos = XYZ[/b]

aPos = InStr(1, objMail_In.Subject, "/", CompareMethod.Text)    ' Gibt die "Beginposition" in aPos zurück
bPos = InStr(13, objMail_In.Subject, "/", CompareMethod.Text)   ' Gibt die "Endposition" in bPos zurück
Length = bPos - aPos - 1                                        ' Berechnet die Länge

benutzer = Mid(objMail_In.Subject + 1, aPos, Length)            ' Liest von aPos+1 bis bPos aus dem Betreff aus und schreibt in "benutzter"

Set objMail_In = ActiveInspector.CurrentItem
Set objMail_Out = objMail_In.Forward

With objMail_Out
.To = benutzer & "@gmx.de"                                      ' Empfängeradresse
.Subject = "Bestellung ist erfolgt: " & objMail_In.Subject      ' Zusatz in Betreffzeile
.DeleteAfterSubmit = True                                       ' Nicht im gesendete Postfach speichern
.Send                                                           ' Weiterleiten
ActiveInspector.Close olDiscard                                 ' Schließt geöffnete Mail
objMail_In.Delete                                               ' Löscht die gerade geschlossene Mail im Posteingang/Ordner
End With

End Sub
Michael Bauer
MVP Outlook


Verfasst am:
09. Apr 2014, 15:15
Rufname:
Wohnort: Vollersode

AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au - AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au

Nach oben
       Version: Office 2007

Du machst es viel zu kompliziert. Gehe zurück zur genannten Code-Version. Jede Zeile war richtig, nur die Reihenfolge der Zeilen stimmte nicht.

Zitat:
Kommt VB damit klar in der InStr() Funktion objMail_In.subject zu verwenden obwohl vorher noch der Set Befehl dazu fehlt ?
Nein, VB kommt damit nicht klar, deswegen wird die Zeile als Fehler gemeldet.
_________________
Michael Bauer
Tools für Microsoft Outlook
Stb
Im Profil kannst Du frei den Rang ändern


Verfasst am:
09. Apr 2014, 16:13
Rufname:

AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au - AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au

Nach oben
       Version: Office 2007

Hallo Michael,

das habe ich im Gespräch mit einem Kollegen auch gerade bemerkt... (-;
Ich hatte nicht verstanden dass es gar nicht um aPos geht, sondern um das Set für objMail_In !
Dieses steht jetzt vor der ersten Nutzung, zudem braucht InStr offenabr Binary und nicht Text.

Es funktioniert nun und ich bin zufrieden, vielen Dank für Deine Hilfe !
Ich habe auf jeden Fall etwas über Dim und Set gelernt (-;

Code:
Sub Weiterleiten()

Dim objMail_In As Outlook.MailItem
Dim objMail_Out As Outlook.MailItem
Dim aPos, bPos, Length As Integer
Dim benutzer As String
Dim myInspector As Outlook.Inspector                            ' Dieser Abschnitt sorgt dafür dass das Makro nicht ausgeführt wird wenn es
                                                                ' nicht aus einer geöffneten Mail heraus gestartet wird.
Set myInspector = Application.ActiveInspector

If Not TypeName(myInspector) = "Nothing" Then
    If myInspector.CurrentItem.Class = olMail Then
        Set objMail_In = myInspector.CurrentItem
    Else
        Exit Sub
    End If
End If

aPos = InStr(1, objMail_In.Subject, "/")                        ' Gibt die "Beginposition" in aPos zurück
bPos = InStr(13, objMail_In.Subject, "/")                       ' Gibt die "Endposition" in bPos zurück
Length = bPos - aPos - 1                                        ' Berechnet die Länge
benutzer = Mid(objMail_In.Subject, aPos + 1, Length)            ' Liest von aPos+1 bis bPos aus dem Betreff aus und schreibt in "benutzter", +1 damit er nicht den "/" mit nimmt.

Set objMail_Out = objMail_In.Forward

With objMail_Out
.To = benutzer & "@gmx.de"                                 ' Empfängeradresse
.Subject = "Bestellung ist erfolgt: " & objMail_In.Subject      ' Zusatz in Betreffzeile
.DeleteAfterSubmit = True                                       ' Nicht im gesendete Postfach speichern
.Send                                                           ' Weiterleiten
ActiveInspector.Close olDiscard                                 ' Schließt geöffnete Mail
objMail_In.Delete                                               ' Löscht die gerade geschlossene Mail im Posteingang/Ordner
End With

End Sub
Michael Bauer
MVP Outlook


Verfasst am:
09. Apr 2014, 17:27
Rufname:
Wohnort: Vollersode


AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au - AW: Weiterl.&löschen per Makro, Empfänger aus Betreff au

Nach oben
       Version: Office 2007

Glückwunsch.

Instr kannst Du mit beidem benutzen, nur "CompareMethod.Text" gibt es nicht, aber auch das wird Dir der Compiler ja schon gemeldet haben.

Die binäre Suche unterscheidet Groß-/Kleinschreibung, die Textsuche tut das nicht. Bei der Suche nach einem Slash ist es also egal, welche der beiden Methoden Du verwendest.

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

Diese Seite Freunden empfehlen

Seite 1 von 1
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: eMails empfangen & senden 2 Daniel Evers 1419 21. Aug 2006, 20:33
Daniel Evers eMails empfangen & senden
Keine neuen Beiträge Outlook Mail: Outlook 97 & Add-ins 1 strulli 689 30. Jun 2006, 03:25
Christi@n Outlook 97 & Add-ins
Keine neuen Beiträge Outlook Mail: Kein Absender; Kein Betreff 1 alex320 2132 15. Jun 2006, 12:23
Peter Marchert Kein Absender; Kein Betreff
Keine neuen Beiträge Outlook Mail: Outlook 2003 - Ordner löschen? z.B. Junk-E-Mail, Suchordner 3 gRiMMi 10925 15. Mai 2006, 09:42
plill Outlook 2003 - Ordner löschen? z.B. Junk-E-Mail, Suchordner
Keine neuen Beiträge Outlook Mail: Regeln und Benachrichtigungen / Makro / starten 0 HeBr 1104 28. März 2006, 17:42
HeBr Regeln und Benachrichtigungen / Makro / starten
Keine neuen Beiträge Outlook Mail: meine e-mails mit Anhang erhält der Empfänger 3-5 Mal 0 Moni10 822 22. Feb 2006, 15:22
Moni10 meine e-mails mit Anhang erhält der Empfänger 3-5 Mal
Keine neuen Beiträge Outlook Mail: gelöschte Objekte beim schließen autom. löschen 1 Falcon.X 26014 14. Jan 2006, 20:05
Peter Marchert gelöschte Objekte beim schließen autom. löschen
Keine neuen Beiträge Outlook Mail: Wer kann helfen? Mailkopf auslesen + kopieren 1 Lothar2 1625 31. Aug 2005, 19:00
ae Wer kann helfen? Mailkopf auslesen + kopieren
Keine neuen Beiträge Outlook Mail: Emailanhang entspr. Betreff in Ordner verschieben 6 GeorgB 1501 01. Aug 2005, 07:41
GeorgK Emailanhang entspr. Betreff in Ordner verschieben
Keine neuen Beiträge Outlook Mail: auch aus "Wiederherstellen" löschen 2 acki-bm 700 01. Jul 2005, 12:23
wolf-it auch aus "Wiederherstellen" löschen
Keine neuen Beiträge Outlook Mail: Verbindung zum Exchange Server per HTTP 1 normi783423 704 08. Apr 2005, 09:27
normi783423 Verbindung zum Exchange Server per HTTP
Keine neuen Beiträge Outlook Mail: Lesebestätigung im Postausgang... wie löschen?!? 11 Peggy 9144 01. Sep 2004, 11:16
Gast Lesebestätigung im Postausgang... wie löschen?!?
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Excel Tipps