E-Mail per Makro in Ordner verschieben

Home-›Foren-›Outlook-›Outlook VBA-›E-Mail per Makro in Ordner verschieben

15 Antworten anzeigen - 1 bis 15 (von insgesamt 17)
  • Autor
    Beitrag
  • #42725
    Unbekannt
    Participant

      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
      Participant

        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
        Participant

          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
          Participant

            [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
            Participant

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

              #149110
              MichaelBauer
              Participant

                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
                Participant

                  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
                  Participant

                    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
                    Participant

                      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
                      Participant

                        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
                        Participant

                          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
                          Participant

                            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
                            Participant

                              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
                              Participant

                                ersetze die Zeile:

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

                                mit dieser

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

                                #177109
                                Unbekannt
                                Participant

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

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

                                15 Antworten anzeigen - 1 bis 15 (von insgesamt 17)

                                Hat Ihnen der Beitrag gefallen?

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