Hallo Gemeinschaft,
möchte gerne automatisiert emails speichern als txt File
dazu dieses Script
leider bekomme ich es nicht zum Laufen
es startet nicht
Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
Dim Ns As Outlook.NameSpace
Set Ns = Application.GetNamespace("MAPI")
Set Items = Ns.GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub Items_ItemAdd(ByVal Item As Object)
If TypeOf Item Is Outlook.MailItem Then
SaveMailAsFile Item
End If
End Sub
Private Sub SaveMailAsFile(oMail As Outlook.MailItem)
Dim dtDate As Date
Dim sName As String
Dim sFile As String
Dim sExt As String
sPath = "c:\mails"
sExt = ".txt"
sName = oMail.Subject
ReplaceCharsForFileName sName, "_"
dtDate = oMail.ReceivedTime
sName = Format(dtDate, "yyyymmdd", vbUseSystemDayOfWeek, _
vbUseSystem) & Format(dtDate, "-hhnnss", _
vbUseSystemDayOfWeek, vbUseSystem) & "-" & sName & sExt
oMail.SaveAs sPath & sName, olSaveAsMsg
End Sub
Private Sub ReplaceCharsForFileName(sName As String, _
sChr As String _
)
sName = Replace(sName, "/", sChr)
sName = Replace(sName, "", sChr)
sName = Replace(sName, ":", sChr)
sName = Replace(sName, "?", sChr)
sName = Replace(sName, Chr(34), sChr)
sName = Replace(sName, "<", sChr)
sName = Replace(sName, ">", sChr)
sName = Replace(sName, "|", sChr)
End Sub
habs hinbekommen
Und warum berichtest du nicht was das Problem war?
Das hier ist ein Forum und keine Einbahnstraße.
Erste Blickdiagnose: Beim Pfad fehlte der Backslash. Da die Error Behandlung fehlt, führt das natürlich zu entsprechenden Folgefehlern.
Hi
lieben Dank für die Info - ich hatte ein anders Script verwendet
nun noch eine Frage - ich verwende mehrere Emailadressen in Outlook
kannst du mir erklären, wie ich auf den Ordner "Neugefiltert" beim Mailkonto Test@test.de komme
Sub Application_Startup()
On Error Resume Next
'Dim myFolder As Outlook.MAPIFolder
Dim myNamespace As Outlook.NameSpace
Dim myFolder As Outlook.Folder
Dim myNewFolder As Outlook.Folder
Set myNamespace = Application.GetNamespace("MAPI")
Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)
Application.GetNamespace("MAPI").GetDefaultFolder (olFolderInbox)
Dieser Code zeigt das grundsätzliche Konzept:
http://www.vboffice.net/de/developers/ordner-suchen/
wenn ich nun nach einem Ordner suche - Neugefiltert - dann bekomme ich einen Pfand angezeigt
\\test@test.de \Posteingang\Neugefiltert
wo und wie setze ich diesen Pfad ein
und wie mache ich diesen Ordner zum Ordner der auf neue Mails geprüft wird
waere klasse, wenn ihr da noch einmal schauen könntet
@martenk,
du hast ja bereits einen vollständigen Code der das Prinzip zeigt.
Hast du dich damit auseinander gesetzt?
Was du nicht verstehst solltest du in der Hilfe nachlesen,
danach kannst du gerne hier konkret fragen wenn du nicht weiter kommst.
Aber mir fehlt deine Bereitschaft, dir das Thema zu erarbeiten.
Copy&Paste Programmierer gibt es schon zu viele.
ich habs so probiert
Set myFolder = Application.Session.Folders("Outlook").Folders("\\test@test.de \Posteingang\Neugefiltert")
klappt aber nicht es werden im mer noch die mails aus dem falschen konto genommen
Du hast dir den Code wohl noch nicht richtig angesehen.
Schau dir einfach das Beispiel an.
Sub FolderPrint()
Dim F As Outlook.Folder
Dim oApp As New Outlook.Application
For Each F In oApp.Session.Folders
Debug.Print F.Name
Next
End Sub
Die Namen die ausgegeben werden existieren real bei dir.
Und mit genau der Bezeichnung kannst du dann auch einen bestimmten Ordner öffnen.
Genauso mit den Unterordnern.