Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mail per VBA in Outlook verschieben

Mail per VBA in Outlook verschieben
06.12.2007 11:31:00
Sehli
Hi Leute!
Also ich hab folgendes "Problem":
Ich hab ein Makro erstellt mit dem ich mein Excel File als Anhang in einem Mail versende.
Per Userform wähle ich den Empfänger aus, das Mail und der Anhang werden mir jeweils 2Mal ausgedruckt....
Nun will ich, dass das Mail im Outlook automatisch aus den "sent Items" in einen Archiv-Folder verschoben wird...
Ist das irgendwie möglich?

Sub BCC_Senden()
Application.DisplayAlerts = wdAlertsNone
ActiveWorkbook.SaveAs Filename:="C:\Temp\Barcode Compare.xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
Dim Nachricht As Object, OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
Dim AWS As String
AWS = ThisWorkbook.FullName
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
UserForm1.Show
Dim StrName As String
strBetreff = Sheets("BCC").Range("ItemCode")
StrName = UserForm1.ComboBox1.Value
.to = StrName
.Subject = Sheets("BCC").Range("ItemCode")
.attachments.Add AWS
.Body = "Hi!" & vbCrLf & vbCrLf & _
"LG sehli "
.send
ActiveWindow.SelectedSheets.PrintOut copies:=2, Collate:=True
Application.DisplayAlerts = wdAlertsAll
ThisWorkbook.Saved = True
Application.Quit
End With
Dim MyOutId As Integer
Dim MyOutFolder As Object
Dim MyOutlook As Object
Dim MySentItem As Object
Set MyOutlook = CreateObject("Outlook.Application")
Set MyOutFolder = MyOutlook.GetNamespace("MAPI").GetDefaultFolder(5)
For MyOutId = 1 To MyOutFolder.Items.Count
Set MySentItem = MyOutFolder.Items(MyOutId)
With MySentItem
If .Subject = strBetreff Then
.PrintOut
.PrintOut
      'Jetzt sollte das Mail in mein Archiv verschoben werden.
Application.DisplayAlerts = wdAlertsAll
End If
End With
Next
End Sub


verzeiht eventuelle umständliche "Umschreibungen" :-) Hab noch nicht viel Erfahrung mit VBA... Hauptsache, es funktioniert *g*
Danke
LG sehli

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mail per VBA in Outlook verschieben
06.12.2007 12:15:00
Kawensmann
Hallo,
der Befehl heißt sinnigerweise "Move", also ungefähr so:

With MySentItem
If .Subject = strBetreff Then
.PrintOut
.PrintOut
.Move DeinArchivOrdner


Gruß
Kawensmann

AW: Mail per VBA in Outlook verschieben
06.12.2007 12:48:29
Sehli
Hi,
ja, das hab ich mir schon gedacht... :-)
Nur klappt das irgendwie nicht... Vielleicht hab ich den Ordner falsch angegeben, kA..
.move .folders("\\2007\Barcode CC\Heute")
Habs in allen möglichen Schreibweisen versucht :-( ...ohne .folders, mit und ohne "Überordner", verschiedener Zeichensetzung, usw....
Wie genau soll ich denn den Meinen Archiv Ordner jetz angeben?
Danke
LG Sehli

Anzeige
AW: Mail per VBA in Outlook verschieben
06.12.2007 12:59:52
Sehli
Kann ich vielleicht auch direkt einen Ordner mit dem Betreff meiner Mail in diesem Verzeichnis erstellen?
Also so, dass das Mail einen eigenen Ordner bekommt (der so heisst, wie eben der Betreff des Mails) und so dann in meinen Archiv Ordner Verschoben wird?
Ich hoffe, das war jetzt irgendwie verständlich erklärt :-)
LG sehli

Anzeige
AW: Mail per VBA in Outlook verschieben
06.12.2007 14:36:13
Kawensmann
Meinst du einen "normalen" Windows-Ordner oder einen Outlook-Mail-Ordner?

AW: Mail per VBA in Outlook verschieben
06.12.2007 14:43:12
Sehli
ne, schon nen Outlook Mail ordner :-D

AW: Mail per VBA in Outlook verschieben
06.12.2007 14:56:00
Kawensmann
Der folgende Code funktiert bei mir:

Dim myOutApp As Object
Dim myNameSpace As Object
Dim myMailFolder As Object
Dim myPrivateFolder As Object
Set myOutApp = CreateObject("Outlook.application")
Set myNameSpace = myOutApp.GetNamespace("MAPI")
Set myMailFolder = myNameSpace.getdefaultfolder(5)
Set myPrivateFolder = myMailFolder.Folders("2007").Folders("Barcode CC").Folders("Heute")


Die 5 bei getdefaultfolder steht für dien SentMail-Ordner, eventuell musst du die ändern (4= Outbox, 16 =Entwürfe, 6= Inbox, 3=deleted Items)
Viel Erfolg
Kawensmann

Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Mail per VBA in Outlook verschieben


Schritt-für-Schritt-Anleitung

Um eine E-Mail in Outlook mithilfe von VBA zu verschieben, befolge diese Schritte:

  1. Makro erstellen: Öffne Excel und erstelle ein neues Makro. Füge den folgenden Code in das Modul ein:

    Sub BCC_Senden()
       Application.DisplayAlerts = wdAlertsNone
       ' Speichere die Arbeitsmappe
       ActiveWorkbook.SaveAs Filename:="C:\Temp\Barcode Compare.xls", FileFormat:=xlNormal
       Dim Nachricht As Object, OutApp As Object
       Set OutApp = CreateObject("Outlook.Application")
       Dim AWS As String
       AWS = ThisWorkbook.FullName
       Set Nachricht = OutApp.CreateItem(0)
       With Nachricht
           UserForm1.Show
           Dim StrName As String
           strBetreff = Sheets("BCC").Range("ItemCode")
           StrName = UserForm1.ComboBox1.Value
           .To = StrName
           .Subject = Sheets("BCC").Range("ItemCode")
           .Attachments.Add AWS
           .Body = "Hi!" & vbCrLf & vbCrLf & "LG sehli "
           .Send
       End With
    
       ' E-Mail nach dem Senden verschieben
       Dim MyOutId As Integer
       Dim MyOutFolder As Object
       Dim MyOutlook As Object
       Dim MySentItem As Object
       Set MyOutlook = CreateObject("Outlook.Application")
       Set MyOutFolder = MyOutlook.GetNamespace("MAPI").GetDefaultFolder(5)
       For MyOutId = 1 To MyOutFolder.Items.Count
           Set MySentItem = MyOutFolder.Items(MyOutId)
           With MySentItem
               If .Subject = strBetreff Then
                   .Move DeinArchivOrdner ' Hier den Zielordner angeben
               End If
           End With
       Next
    End Sub
  2. Zielordner angeben: Stelle sicher, dass du den Zielordner korrekt angibst, z.B.:

    .Move myPrivateFolder
  3. Testen: Führe das Makro aus und überprüfe, ob die E-Mail erfolgreich verschoben wurde.


Häufige Fehler und Lösungen

  • Fehler beim Verschieben der E-Mail: Stelle sicher, dass der Zielordner korrekt angegeben ist. Verwende den richtigen Pfad:

    Set myPrivateFolder = myMailFolder.Folders("DeinOrdner")
  • E-Mail wird nicht gefunden: Überprüfe, ob der Betreff exakt übereinstimmt. Gegebenenfalls kannst du die Suche anpassen.

  • Zugriffsprobleme: Achte darauf, dass Outlook geöffnet ist und du die nötigen Berechtigungen hast, um auf den Ordner zuzugreifen.


Alternative Methoden

Wenn du Schwierigkeiten mit VBA hast, kannst du auch die folgenden Methoden in Betracht ziehen:

  1. Regeln in Outlook: Nutze die integrierten Regeln in Outlook, um E-Mails automatisch zu verschieben.
  2. Makros mit Outlook-Add-Ins: Es gibt verschiedene Add-Ins, die das Verschieben von E-Mails erleichtern können, ohne dass du selbst Code schreiben musst.

Praktische Beispiele

Hier sind einige Beispiele, wie du den Code anpassen kannst:

  • E-Mail in einen Unterordner verschieben:

    Set myPrivateFolder = myMailFolder.Folders("2007").Folders("Barcode CC").Folders("Heute")
  • E-Mail mit dynamischem Betreff in einen neuen Ordner verschieben:

    Set myNewFolder = myMailFolder.Folders.Add(strBetreff)
    MySentItem.Move myNewFolder

Tipps für Profis

  1. Fehlerbehandlung einfügen: Verwende On Error Resume Next, um Fehler im Makro zu ignorieren und weiter auszuführen.
  2. Optimierung des Codes: Vermeide unnötige PrintOut-Befehle, um die Ausführung zu beschleunigen.
  3. Dokumentation: Kommentiere deinen Code ausführlich, damit du und andere ihn später leichter verstehen.

FAQ: Häufige Fragen

1. Wie kann ich den Zielordner dynamisch erstellen? Du kannst einen neuen Ordner mit dem Betreff der E-Mail erstellen, indem du die Folders.Add-Methode verwendest.

2. Was ist, wenn mein Outlook nicht reagiert? Überprüfe, ob ein anderes Skript oder Makro ausgeführt wird, das die Leistung beeinträchtigt. Starte Outlook neu, wenn nötig.

3. Ist dieser Code mit allen Excel-Versionen kompatibel? Der Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen, insbesondere ab Excel 2007.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige