Home-›Foren-›Outlook-›Outlook VBA-›E-Mail per Makro in Ordner verschieben
- This topic has 16 Antworten, 2 Stimmen, and was last updated 11:57 um 19. Oktober 2011 by Unbekannt.
- AutorBeitrag
- 28. August 2007 um 07:44 #149046MichaelBauerParticipant
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 Bauer28. August 2007 um 11:24 #149050UnbekanntParticipantIch 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]
29. August 2007 um 07:56 #149079MichaelBauerParticipant[code]
Dim TargetFolder as Outlook.Mapifolder
Dim obj as Object
Dim Sel as Outlook.ExplorerSet TargetFolder=Application.Session.GetDefaultFolder(olFolderDeleteItems)
Set Sel=Application.ActiveExplorer.SelectionIf Sel.Count Then
Set obj=Sel(1)
obj.Move targetFolder
Endif
[/code]Viele Grüße
Michael Bauer29. August 2007 um 19:26 #149090UnbekanntParticipantVielen Dank! Jedoch: \”Mindestens ein Parameterwert ist ungültig.\” wird angezeigt. Und wo trage ich den Zielordner ein?
30. August 2007 um 08:07 #149110MichaelBauerParticipantSorry, es fehlte ein \’d\’
statt: olFolderDeleteItems
besser: olFolderDeletedItemsWas meinst Du mit der Frage nach dem Zielordner?
Viele Grüße
Michael Bauer30. August 2007 um 18:09 #149138UnbekanntParticipantJetzt 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.
31. August 2007 um 08:03 #149174MichaelBauerParticipantHier 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 Bauer31. August 2007 um 16:31 #149188UnbekanntParticipantDanke 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.
5. Oktober 2007 um 14:46 #151141UnbekanntParticipantHallo,
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 ThenIf 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.FileNameNext
Else
MsgBox (\”Leerer Body\”)
End If
End If\’wenn email als html
If myMail.GetInspector.EditorType = olEditorHTML ThenIf 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\”, olHTMLNext
\’Anhang mit speichern
For Each anhang In myMail.Attachments
anhang.SaveAsFile \”c:\\temp\\\” & anhang.FileNameNext
Else
MsgBox (\”Leerer Body\”)
MsgBox (myMail.Body)
End If
End If
\’wenn email rtf
If myMail.GetInspector.EditorType = olEditorRTF ThenIf 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 ThenIf 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.FileNameNext
Else
MsgBox (\”Leerer Body\”)
End If
End IfNext
MsgBox (\”Speichern beendet\”)
End SubDenn 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
9. April 2008 um 11:47 #159341UnbekanntParticipantHi,
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
27. Januar 2009 um 21:10 #168118UnbekanntParticipantHoi 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.MailItemSet 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 IfIf Application.ActiveExplorer.Selection.Count = 0 Then
Exit Sub
End IfFor Each objItem In Application.ActiveExplorer.Selection
If objFolder.DefaultItemType = olMailItem Then
If objItem.Class = olMail Then
objItem.Move objFolder
End If
End If
NextSet objItem = Nothing
Set objFolder = Nothing
Set objInbox = Nothing
Set objNS = NothingEnd Sub
[line]Diese funktioniert einwandfrei.
Gruss Bandy 😉
17. Juni 2009 um 13:21 #171564UnbekanntParticipantHallo 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
20. Januar 2010 um 16:24 #176926UnbekanntParticipantersetze die Zeile:
Set objFolder = objInbox.Parent.Folders(\”Test\”)
mit dieser
Set objFolder = Application.GetNamespace(\”MAPI\”).Folders.Item(\”Postfach – XXX\”).Folders(\”test\”)
25. Januar 2010 um 19:50 #177109UnbekanntParticipant… das gibt es doch schon alles fertig und bei geringem E-Mail Aufkommen als Freeware !
28. April 2010 um 15:31 #179668UnbekanntParticipantHallo,
ich bin eben auf meiner Suche via Google unter anderem auch über diesen Thread gestolpert.
Vielleicht kann mir ja jemand den entscheidenden Tipp geben.Da bei einigen Usern hier die Outlookregeln ausgeschöpft sind, und sich keine weiteren Regeln einrichten lassen, wollte ich da das mittels Makro abfackeln.
folgendes habe ich schonmal:
[CODE]
Private Sub Application_NewMail()
\’ Holt die erste ungelesene Mail und tut was damit
Dim olFld As Outlook.MAPIFolder
Set olFld = Outlook.Session.GetDefaultFolder(olFolderInbox)
olFld.Items.Sort \”[SentOn]\”, True
Set objTargetFolder = olFld.Parent.Folders(\”test\”)Dim oMail As Outlook.MailItem
Set oMail = olFld.Items.GetLast\’ Hier Mail suchen und verschieben
MsgBox \”Mail:\” & oMail.Subject
if oMail.SenderEmailaddress \’ist in der Verteilerliste
then oMail.Move objTargetFolderSet oMail = Nothing
Set olFld = Nothing
Set objTargetFolder = Nothing
End Sub
[/CODE]Nur bin ich kein VBA Bewanderter, und so weiß ich nicht wie/ob man Verteilerlisten auslesen kann. Geht das überhaupt? und wenn ja wie?
Ich würde mich echt über hinweise freuen!
Danke schon mal vorab!
lg
Peter - AutorBeitrag