Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1272to1276
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Outlook EMail Anhang speichern

Outlook EMail Anhang speichern
Jens
Hallo Leute,
Hab da mal wieder eine Frage.
Hab ein Makro welches mir den email eingang in outlook nach neuen mail durchsucht und in eine Tabelle auflistet.
In einer spalte steht dann ob Anhänge dabei sind oder nicht.
Kann ich aus Excel herraus die Tabelle die im Anhang ist in einem bestimmten Ordner speichern lassen und die EMail als gelesen markieren oder löschen?
AW: Outlook EMail Anhang speichern
25.07.2012 18:28:48
Josef

Hallo Jens,
zeig deinen Code.
Sollen alle Anhänge gespeichert werden, oder nur bestimmte?

« Gruß Sepp »

AW: Outlook EMail Anhang speichern
25.07.2012 18:54:00
Jens
Hallo Sepp,
der Code den ich aus dem Netz habe sieht so aus.
Sub OutlookPosteingang()
Dim OLF As Outlook.MAPIFolder
Dim AnzEintraege As Integer, i As Integer, Email As Integer
On Error Resume Next
Set OLF = GetObject("", "Outlook.Application") _
.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
AnzEintraege = OLF.Items.Count
i = 0: Email = 0
While i 
Ich habe ihn so abgeändert das ich nur Mails mit bestimmetem Betreff raus filtere.
In der EMail gibt es nur einen Anhang (eine Exceltabelle) die ich speichern möchte.
vielen Dank im vorraus
Anzeige
AW: Outlook EMail Anhang speichern
25.07.2012 19:45:04
Josef

Hallo Jens,
probiere mal.
Sub OutlookPosteingang()
  Dim objOL As Object, objFolder As Object
  Dim strPath As String
  Dim lngIndex As Long, lngCur As Long, lngCount As Long, lngRow As Long
  
  On Error Resume Next
  
  strPath = "E:\Temp" 'Speicherpfad - Anpassen!
  
  strPath = IIf(Right(strPath, 1) = "\", strPath, strPath & "\")
  
  Set objOL = CreateObject("Outlook.Application")
  Set objFolder = objOL.GetNamespace("MAPI").GetDefaultFolder(6)
  
  lngCount = objFolder.Items.Count
  
  lngRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
  
  For lngCur = 1 To lngCount
    Application.StatusBar = "Lese Posteingang " & _
      Format(lngCur / lngCount, "0%")
    With objFolder.Items(lngCur)
      If .Subject = "test" Then
        lngRow = lngRow + 1
        Cells(lngRow, 1).Value = .Subject
        Cells(lngRow, 2).Value = .ReceivedTime
        Cells(lngRow, 3).Value = .SenderName
        Cells(lngRow, 4).Value = .SenderEmailAddress
        Cells(lngRow, 5).Value = .Body
        Cells(lngRow, 6).Value = .Attachments.Count
        If .Attachments.Count > 0 Then
          For lngIndex = 1 To .Attachments.Count
            .Attachments.Item(lngIndex).SaveAsFile strPath & .Attachments.Item(lngIndex).Filename
          Next
        End If
        .UnRead = False 'als gelesen markieren
        '.Delete 'Löschen
      End If
    End With
  Next
  
  [A2].Select
  ActiveWorkbook.Saved = True
  Application.StatusBar = False
  
  Set objFolder = Nothing
  Set objOL = Nothing
End Sub



« Gruß Sepp »

Anzeige
AW: Outlook EMail Anhang speichern
25.07.2012 20:30:52
Jens
Danke Sepp,
der Eintrag in die Tabelle funktioniert wie vorher, nur leider wird der Anhang nicht gespeichert.
Habe Pfad und Betreff angepasst.
Habe das Makro per Einzelschritt durchlaufen lassen.
Die betreffende Mail wird gefunden, der richtige Pfad wird genommen, nur bei den beiden Zeilen
For lngIndex = 1 To .Attachments.Count
.Attachments.Item(lngIndex).SaveAsFile strPath & .Attachments.Item(lngIndex).Filename
passiert leider nichts. Es kommt auch keine Fehlermeldung.
AW: Outlook EMail Anhang speichern
25.07.2012 20:48:35
Josef

Hallo Jens,
Fehlermeldung kann keine kommen, weil du ja "On Error Resume Next" drin stehen hast.
Jetzt weißt du, warum man das nur in Ausnahmefällen verwenden soll!
Teste mal so und schau, was im Direktfenster ausgegeben wird.
Sub OutlookPosteingang()
  Dim objOL As Object, objFolder As Object
  Dim strPath As String
  Dim lngIndex As Long, lngCur As Long, lngCount As Long, lngRow As Long
  Dim lngCalc As Long
  
  On Error GoTo ErrExit
  
  With Application
    .ScreenUpdating = False
    .EnableEvents = False
    lngCalc = .Calculation
    .Calculation = xlCalculationManual
    .DisplayAlerts = False
  End With
  
  strPath = "E:\Temp" 'Speicherpfad - Anpassen!
  
  strPath = IIf(Right(strPath, 1) = "\", strPath, strPath & "\")
  
  Set objOL = CreateObject("Outlook.Application")
  Set objFolder = objOL.GetNamespace("MAPI").GetDefaultFolder(6)
  
  lngCount = objFolder.Items.Count
  
  lngRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
  
  For lngCur = 1 To lngCount
    Application.StatusBar = "Lese Posteingang " & _
      Format(lngCur / lngCount, "0%")
    With objFolder.Items(lngCur)
      If .Subject = "test" Then
        lngRow = lngRow + 1
        Cells(lngRow, 1).Value = .Subject
        Cells(lngRow, 2).Value = .ReceivedTime
        Cells(lngRow, 3).Value = .SenderName
        Cells(lngRow, 4).Value = .SenderEmailAddress
        Cells(lngRow, 5).Value = .Body
        Cells(lngRow, 6).Value = .Attachments.Count
        If .Attachments.Count > 0 Then
          For lngIndex = 1 To .Attachments.Count
            Debug.Print strPath & .Attachments.Item(lngIndex).Filename 'Ausgabe im Direktfenster! (Strg+G)
            .Attachments.Item(lngIndex).SaveAsFile strPath & .Attachments.Item(lngIndex).Filename
          Next
        End If
        .UnRead = False 'als gelesen markieren
        '.Delete 'Löschen
      End If
    End With
  Next
  
  [A2].Select
  ActiveWorkbook.Saved = True
  
  ErrExit:
  
  With Err
    If .Number <> 0 Then
      MsgBox "Fehler in Prozedur:" & vbTab & "'OutlookPosteingang'" & vbLf & String(60, "_") & _
        vbLf & vbLf & IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
        "Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & vbTab & _
        .Description & vbLf, vbExclamation + vbMsgBoxSetForeground, _
        "VBA - Fehler in Modul - Modul1"
      .Clear
    End If
  End With
  
  On Error GoTo 0
  
  With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = lngCalc
    .DisplayAlerts = True
    .StatusBar = False
  End With
  
  Set objFolder = Nothing
  Set objOL = Nothing
End Sub



« Gruß Sepp »

Anzeige
AW: Outlook EMail Anhang speichern
25.07.2012 21:01:53
Jens
Danke Sepp,
hab meinen Fehler schon gefunden. Hatte einen schreibfehler im Pfad.
Danke für deine Mühe.
Eine Frage nur so was ist denn das Direktfenster und wofür kann man dieses nutzen?
Vielen Dank noch mal. Jetzt komm ich endlich weiter.
AW: Outlook EMail Anhang speichern
25.07.2012 21:12:10
Josef

Hallo Jens,
im Direktfenster (Anzeigen mit Strg+G) kann man sich z. B. den Inhalt von Variablen anzeigen lassen und vieles mehr. ein Einstieg Direktfenster

« Gruß Sepp »

Anzeige
AW: Outlook EMail Anhang speichern
25.07.2012 22:07:05
Jens
Danke Sepp,
hab meinen Fehler schon gefunden. Hatte einen schreibfehler im Pfad.
Danke für deine Mühe.
Eine Frage nur so was ist denn das Direktfenster und wofür kann man dieses nutzen?
Vielen Dank noch mal. Jetzt komm ich endlich weiter.
schon beantwortet! warum alles doppelt? o.T.
25.07.2012 22:29:54
Josef
« Gruß Sepp »

AW: Outlook EMail Anhang speichern
25.07.2012 19:04:05
Jens
Hallo Sepp,
der Code den ich aus dem Netz habe sieht so aus.
Sub OutlookPosteingang()
Dim OLF As Outlook.MAPIFolder
Dim AnzEintraege As Integer, i As Integer, Email As Integer
On Error Resume Next
Set OLF = GetObject("", "Outlook.Application") _
.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
AnzEintraege = OLF.Items.Count
i = 0: Email = 0
While i 
Ich habe ihn so abgeändert das ich nur Mails mit bestimmetem Betreff raus filtere.
In der EMail gibt es nur einen Anhang (eine Exceltabelle) die ich speichern möchte.
vielen Dank im vorraus
Anzeige

48 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige