E-Mail per Makro in Ordner verschieben

HomeForenOutlookOutlook VBAE-Mail per Makro in Ordner verschieben

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 17)
  • Autor
    Beitrag
  • #42725

    Unbekannt
    Teilnehmer

    Hallo!

    Ich möchte gerne in Outlook 2007 eine E-Mail per Makro in einen festgelegten Ordner verschieben. Das sollte für die VBA-Experten unter euch eine Kleinigkeit sein. Leider kenne ich mich damit gar nicht aus.

    Ich weiß, dass es dafür in Outlook einen Button gibt, jedoch muss man anschließend den Ordner immer manuell wählen. Ich hätte das gerne als „One-Click“-Lösung.

    Ich hoffe, jemand kann mir helfen, ich habe nämlich in Google schon den ganzen Tag gesucht.

    Vielen Dank!

    jan

    PS: Das Verschieben soll nur bei Bedarf erfolgen, weshalb eine Regel nicht zur Lösung beträgt. Ich möchte das Makro dann einem Button zuweisen.

    #149046

    MichaelBauer
    Teilnehmer

    In der VBA-Hilfe findest Du ein Bsp. zur Move-Funktion. Damit das über einen Button aufgerufen werden kann, muss die Deklaration so aussehen:
    [code]
    Public Sub Verschieben()

    End Sub[/code]

    Viele Grüße
    Michael Bauer

    #149050

    Unbekannt
    Teilnehmer

    Ich begrüßen ja i. d. R. Hilfe zur Selbsthilfe, aber da ich wirklich gar keine Ahnung von VBA habe, wird das trotzdem schwierig für mich? Welches \“Objekt\“ muss ich wählen? Wie wird das \“Ziel\“ korrektur aufgeschrieben (mit Anführungszeichen, mit Hochkomma)?

    Folgendes hat nicht funktioniert:

    [code]Public Sub Verschieben()

    olMailItem.Move Test

    End Sub [/code]

    #149079

    MichaelBauer
    Teilnehmer

    [code]
    Dim TargetFolder as Outlook.Mapifolder
    Dim obj as Object
    Dim Sel as Outlook.Explorer

    Set TargetFolder=Application.Session.GetDefaultFolder(olFolderDeleteItems)
    Set Sel=Application.ActiveExplorer.Selection

    If Sel.Count Then
    Set obj=Sel(1)
    obj.Move targetFolder
    Endif
    [/code]

    Viele Grüße
    Michael Bauer

    #149090

    Unbekannt
    Teilnehmer

    Vielen Dank! Jedoch: \“Mindestens ein Parameterwert ist ungültig.\“ wird angezeigt. Und wo trage ich den Zielordner ein?

    #149110

    MichaelBauer
    Teilnehmer

    Sorry, es fehlte ein \’d\‘

    statt: olFolderDeleteItems
    besser: olFolderDeletedItems

    Was meinst Du mit der Frage nach dem Zielordner?

    Viele Grüße
    Michael Bauer

    #149138

    Unbekannt
    Teilnehmer

    Jetzt kommt die Fehlermeldung \“Typen unverträglich\“.

    Ich möchte doch, dass ich eine E-Mail in den Ordner XYZ verschiebe, wenn ich auf einen Button klicke. Also ohne dass der ordner erst noch manuell gewählt werden muss. Folglich muss doch in dem Makro der Zielordner XYZ irgendwo angegeben werden.

    #149174

    MichaelBauer
    Teilnehmer

    Hier ist eine Funktion, die Dir zum einem Pfad den Ordner liefert: http://www.outlookcode.com/d/code/getfolder.htm.

    Dann zeige mal, wie Dein Code nun aussieht und markiere bitte die Stelle, an welcher der Fehler auftritt.

    Viele Grüße
    Michael Bauer

    #149188

    Unbekannt
    Teilnehmer

    Danke für deine Hilfe, aber das wird mir jetzt zu kompliziert. VBA beherrsche ich nunmal leider nicht. Ich dachte, das wären vielleicht 3 Zeilen Code geworden oder so. Ich werde die E-Mails nun händisch verschieben.

    #151141

    Unbekannt
    Teilnehmer

    Hallo,

    hier ist der Code für das verschieben von markierten Emails in outlook ab 2000.
    Einziges Problem was ich noch habe ist,das die Bilder von HTML Mails nicht in der
    HTML angezeigt werden sondern nur mit in den Ordner kopiert sind. Falls jemand
    dafür eine Lösung hat, wäre ich sehr dankbar.
    Code:

    Option Explicit

    Sub Command1_Click()

    \’rem Deklaration und Definition
    Dim myOlApp As Outlook.Application
    Dim myMail As Outlook.MailItem
    Dim mail As String
    Dim pfad As String
    Dim fs As Object
    Dim anhang As Attachment
    Dim zaehler As Integer

    \’Erzeuge Objektinstanz für mailitem
    Set myOlApp = CreateObject(\“Outlook.Application\“)
    Set myMail = myOlApp.CreateItem(olMailItem)
    Set fs = CreateObject(\“Scripting.FileSystemObject\“)

    \’Inputbox test -> vbCrLf für Zeilenumbruch
    pfad = InputBox(\“Eingabe des Pfades:\“, \“Pfadeingabe\“, \“c:\\temp\\\“)

    \’prüft ob das Verzeichnis existiert
    If fs.FolderExists(pfad) = True Then
    \’MsgBox (\“Pfad existiert\“)
    Else
    MsgBox (\“Pfad existiert nicht Programmabbruch\“)
    End
    End If

    \’Für jedes ausgewähltes Objekt im explorer
    For Each myMail In Outlook.ActiveExplorer.Selection

    \’Wenn email txt
    If myMail.GetInspector.EditorType = olEditorText Then

    If myMail.Body <> \“\“ Then

    mail = Replace(myMail.Subject, \“:\“, \“ \“)
    mail = Replace(mail, \“&\“, \“ \“)
    mail = Replace(mail, \“<\", \" \") mail = Replace(mail, \">\“, \“ \“)
    mail = Replace(mail, \“?\“, \“ \“)
    mail = Replace(mail, \“\\\“, \“ \“)
    mail = Replace(mail, \“/\“, \“ \“)
    mail = Replace(mail, \“*\“, \“ \“)
    mail = Replace(mail, \“|\“, \“ \“)

    \’Mails speichern
    myMail.SaveAs pfad & mail & \“.html\“, olTXT

    \’Anhang mit speichern
    For Each anhang In myMail.Attachments
    anhang.SaveAsFile \“c:\\temp\\\“ & anhang.FileName

    Next

    Else

    MsgBox (\“Leerer Body\“)
    End If
    End If

    \’wenn email als html
    If myMail.GetInspector.EditorType = olEditorHTML Then

    If myMail.Body <> \“\“ Then

    mail = Replace(myMail.Subject, \“:\“, \“ \“)
    mail = Replace(mail, \“&\“, \“ \“)
    mail = Replace(mail, \“<\", \" \") mail = Replace(mail, \">\“, \“ \“)
    mail = Replace(mail, \“?\“, \“ \“)
    mail = Replace(mail, \“\\\“, \“ \“)
    mail = Replace(mail, \“/\“, \“ \“)
    mail = Replace(mail, \“*\“, \“ \“)
    mail = Replace(mail, \“|\“, \“ \“)

    For zaehler = 1 To 2

    \’Mails speichern
    myMail.SaveAs pfad & mail & \“.html\“, olHTML

    Next

    \’Anhang mit speichern
    For Each anhang In myMail.Attachments
    anhang.SaveAsFile \“c:\\temp\\\“ & anhang.FileName

    Next

    Else

    MsgBox (\“Leerer Body\“)
    MsgBox (myMail.Body)
    End If
    End If
    \’wenn email rtf
    If myMail.GetInspector.EditorType = olEditorRTF Then

    If myMail.Body <> \“\“ Then

    mail = Replace(myMail.Subject, \“:\“, \“ \“)
    mail = Replace(mail, \“&\“, \“ \“)
    mail = Replace(mail, \“<\", \" \") mail = Replace(mail, \">\“, \“ \“)
    mail = Replace(mail, \“?\“, \“ \“)
    mail = Replace(mail, \“\\\“, \“ \“)
    mail = Replace(mail, \“/\“, \“ \“)
    mail = Replace(mail, \“*\“, \“ \“)
    mail = Replace(mail, \“|\“, \“ \“)

    \’Mails speichern
    myMail.SaveAs pfad & mail & \“.rtf\“, olRTF

    \’Anhang mit speichern
    For Each anhang In myMail.Attachments
    anhang.SaveAsFile \“c:\\temp\\\“ & anhang.FileName
    Next
    Else
    MsgBox (\“Leerer Body\“)
    End If
    End If

    \’wenn email doc
    If myMail.GetInspector.EditorType = olEditorWord Then

    If myMail.Body <> \“\“ Then

    mail = Replace(myMail.Subject, \“:\“, \“ \“)
    mail = Replace(mail, \“&\“, \“ \“)
    mail = Replace(mail, \“<\", \" \") mail = Replace(mail, \">\“, \“ \“)
    mail = Replace(mail, \“?\“, \“ \“)
    mail = Replace(mail, \“\\\“, \“ \“)
    mail = Replace(mail, \“/\“, \“ \“)
    mail = Replace(mail, \“*\“, \“ \“)
    mail = Replace(mail, \“|\“, \“ \“)

    \’Mails speichern
    myMail.SaveAs pfad & mail & \“.html\“, olDoc

    \’Anhang mit speichern
    For Each anhang In myMail.Attachments
    anhang.SaveAsFile \“c:\\temp\\\“ & anhang.FileName

    Next

    Else

    MsgBox (\“Leerer Body\“)
    End If
    End If

    Next

    MsgBox (\“Speichern beendet\“)
    End Sub

    Denn Code einfach in ein neues Modul reinkopieren und das Projekt speichern.
    Danach unter Extras -> Anpassen , da dann auf Befehle und unter Makros findest
    du dann den Namen von deinem Projekt und das einfach in die Taskleiste ziehen.
    Dann kannst du durch einfachen Klick eine oder mehre markierte Emails in einem
    Ordner deiner Wahl speichern, indem Format wie du Sie bekommen hast.

    Gruß Omega_D

    #159341

    Unbekannt
    Teilnehmer

    Hi,
    ich hab auch von VBA keine ahnung aber ich würde gern alle eMails von einem Selbst erstellten Ordner per Macro in eine PST Verschienen.

    Wie mach ich das?

    Per regel geht leider nicht, da die Mail nicht im Posteingang ankommen darf weil ich den PDA mit dem Eingang synce.

    Danke

    #168118

    Unbekannt
    Teilnehmer

    Hoi zäme

    Hier einfache Button Code indem Ihr markierte Mail in den Ordner z.B. Test verschieben könnt.
    [line]
    Code:

    Sub Verschieben()

    On Error Resume Next

    Dim objFolder As Outlook.MAPIFolder, objInbox As Outlook.MAPIFolder
    Dim objNS As Outlook.NameSpace, objItem As Outlook.MailItem

    Set objNS = Application.GetNamespace(\“MAPI\“)
    Set objInbox = objNS.GetDefaultFolder(olFolderInbox)

    Set objFolder = objInbox.Parent.Folders(\“test\“)

    If objFolder Is Nothing Then
    MsgBox \“Dieser Ordner existiert nicht!\“, vbOKOnly + vbExclamation, \“Fehler\“
    End If

    If Application.ActiveExplorer.Selection.Count = 0 Then
    Exit Sub
    End If

    For Each objItem In Application.ActiveExplorer.Selection
    If objFolder.DefaultItemType = olMailItem Then
    If objItem.Class = olMail Then
    objItem.Move objFolder
    End If
    End If
    Next

    Set objItem = Nothing
    Set objFolder = Nothing
    Set objInbox = Nothing
    Set objNS = Nothing

    End Sub
    [line]

    Diese funktioniert einwandfrei.

    Gruss Bandy 😉

    #171564

    Unbekannt
    Teilnehmer

    Hallo Zusammen,

    wie muss ich den letzten Code umschreiben, daß auch alle Unterordner angegeben werden können?

    Wenn Ordner \“Test\“ kein Unterordner ist, funktioniert der Code ja einwandfrei. Aber sobald er, z. B. Posteingang\\Sammlung\\\“Test\“ so, als Unterordner vorliegt, funktioniert der Code nicht mehr.

    Danke + Grüße Volle

    #176926

    Unbekannt
    Teilnehmer

    ersetze die Zeile:

    Set objFolder = objInbox.Parent.Folders(\“Test\“)

    mit dieser

    Set objFolder = Application.GetNamespace(\“MAPI\“).Folders.Item(\“Postfach – XXX\“).Folders(\“test\“)

    #177109

    Unbekannt
    Teilnehmer

    … das gibt es doch schon alles fertig und bei geringem E-Mail Aufkommen als Freeware !

    http://www.mailonizer.de/index.html/de/produkte/free 😎

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 17)

Du musst angemeldet sein, um auf dieses Thema antworten zu können.

-

Hat Ihnen der Beitrag gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Keine Bewertung vorhanden)
Loading...