Juli 29, 2021, 06:44:24

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Probleme mit VBA Script

Begonnen von martenk, Juni 29, 2021, 14:53:07

⏪ vorheriges - nächstes ⏩

martenk

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

martenk


markus888

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.
10 Jahre Access

martenk

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)

markus888

10 Jahre Access

martenk

Juni 30, 2021, 11:28:47 #5 Letzte Bearbeitung: Juni 30, 2021, 12:48:53 von martenk
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






markus888

@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.



10 Jahre Access

martenk

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

markus888

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.
10 Jahre Access