Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: martenk am Juni 29, 2021, 14:53:07

Titel: Probleme mit VBA Script
Beitrag von: martenk am Juni 29, 2021, 14:53:07
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
Titel: Re: Probleme mit VBA Script
Beitrag von: martenk am Juni 29, 2021, 16:47:51
habs hinbekommen
Titel: Re: Probleme mit VBA Script
Beitrag von: markusxy am Juni 29, 2021, 17:03:30
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.
Titel: Re: Probleme mit VBA Script
Beitrag von: martenk am Juni 29, 2021, 17:07:33
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)
Titel: Re: Probleme mit VBA Script
Beitrag von: markusxy am Juni 29, 2021, 18:27:03
Dieser Code zeigt das grundsätzliche Konzept:

http://www.vboffice.net/de/developers/ordner-suchen/

Titel: Re: Probleme mit VBA Script
Beitrag von: martenk am Juni 30, 2021, 11:28:47
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





Titel: Re: Probleme mit VBA Script
Beitrag von: markusxy am Juli 01, 2021, 13:37:45
@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.



Titel: Re: Probleme mit VBA Script
Beitrag von: martenk am Juli 01, 2021, 16:52:22
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
Titel: Re: Probleme mit VBA Script
Beitrag von: markusxy am Juli 01, 2021, 17:40:30
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.