Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1844to1848
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

E-Mails aus Outlook als .msg speichern

E-Mails aus Outlook als .msg speichern
10.09.2021 14:09:49
Patric
Hallo zusammen
Ich versuche mittels VBA sämtliche E-Mails aus einem Outlook-Ordner in einen bestimmten Datei-Explorer-Ordner als .msg zu speichern.
Beim Versuch, dies durchlaufen zu lassen, erhalte ich bei ".SaveAs FullPath" folgende Fehlermeldung:
"287 - Anwendungs- oder objektdefinierter Fehler"
Kann mir jemand weiterhelfen und sagen, was ich falsch mache?
Ich lade euch noch eine Excel-Datei dazu hoch.
https://www.herber.de/bbs/user/148001.xlsm
Besten Dank für eure Hilfe und einen schönen Tag.
Patric
Folgender Code verwende ich:

Sub MailSpeichern()
Dim olApp As Object
Dim olName As Object
Dim olFolder As Object
Dim olText As String
Dim olItems As Long
Dim Path As String, FullPath As String
Dim Mail As String, Ordner As String, Pfad As String
On Error GoTo Fehler
Mail = Range("C3") 'E-Mailadresse
Ordner = Range("C4")
Pfad = Range("C6")
Set olApp = CreateObject("Outlook.Application")
Set olName = olApp.GetNamespace("MAPI")
Set olFolder = olName.Session.Folders(Mail).Folders(Ordner)
For olItems = 1 To olFolder.Items.Count
Path = Pfad
With olFolder.Items.Item(olItems)
olText = Replace(.Subject, "´", "_")
olText = Replace(olText, "`", "_")
olText = Replace(olText, "'", "_")
olText = Replace(olText, "{", "(")
olText = Replace(olText, "[", "(")
olText = Replace(olText, "]", ")")
olText = Replace(olText, "}", ")")
olText = Replace(olText, "/", "-")
olText = Replace(olText, "", "-")
olText = Replace(olText, ":", "")
olText = Replace(olText, "*", "_")
olText = Replace(olText, "?", "")
olText = Replace(olText, """", "_")
olText = Replace(olText, "|", "_")
olText = Replace(olText, "", "_")
FullPath = Path & Format(.ReceivedTime, "YYYYDDMM") & "-" & Format(.ReceivedTime, "hhmm") & "_" & _
olText & "_" & .Sender & ".msg"
.SaveAs FullPath
End With
Next olItems
Exit Sub
Fehler:
'For Index = 1 To 500
Debug.Print Err.Number & " - " & Error & Chr(10) & FullPath 'Error$(Index)
'Next Index
End Sub



		

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: E-Mails aus Outlook als .msg speichern
10.09.2021 14:19:19
mumpel
Fullpath von was? Du musst den Pfad explizit angeben. "Fullpath" hast Du nicht deklariert und auch nicht gefüllt.
AW: E-Mails aus Outlook als .msg speichern
10.09.2021 14:26:34
Patric
Den FullPath habe ich zusammengesetzt, sowie der Path wird aus Range("C6") genommen. Beides ist als Dim ..... as String deklariert.

FullPath = Path & Format(.ReceivedTime, "YYYYDDMM") & "-" & Format(.ReceivedTime, "hhmm") & "_" & _
olText & "_" & .Sender & ".msg"

Muss ich hier etwas ändern?

Kleiner Hinweis
10.09.2021 14:25:42
mumpel
Im Übrigen sollte man Standardparamter nicht als Variable nutzen. Du sollest also für "Path" und "Fullpath" andere Variablennamen wählen.
Anzeige
AW: Kleiner Hinweis
10.09.2021 14:48:22
Patric
Danke mumpel für den Hinweis. Die Namen habe ich geändert.
Beides habe ich deklariert, erhalte immer noch die gleiche Fehlermeldung.

Sub MailSpeichern()
Dim olApp As Object
Dim olName As Object
Dim olFolder As Object
Dim olText As String
Dim olItems As Long
Dim OrdnerAdresse As String, GanzerPfad As String
Dim Mail As String, Ordner As String
Mail = "hans.muster@web.ch" 'Range("C3") 'E-Mailadresse
Ordner = "Inbox" 'Range("C4")
OrdnerAdresse = "C:\DOKUMENTE\E-Mail Outlook_Sicherung\Inbox\" 'Range("C6")
Set olApp = CreateObject("Outlook.Application")
Set olName = olApp.GetNamespace("MAPI")
Set olFolder = olName.Session.Folders(Mail).Folders(Ordner)
For olItems = 1 To olFolder.Items.Count
With olFolder.Items.Item(olItems)
olText = Replace(.Subject, "´", "_")
olText = Replace(olText, "`", "_")
olText = Replace(olText, "'", "_")
olText = Replace(olText, "{", "(")
olText = Replace(olText, "[", "(")
olText = Replace(olText, "]", ")")
olText = Replace(olText, "}", ")")
olText = Replace(olText, "/", "-")
olText = Replace(olText, "", "-")
olText = Replace(olText, ":", "")
olText = Replace(olText, "*", "_")
olText = Replace(olText, "?", "")
olText = Replace(olText, """", "_")
olText = Replace(olText, "|", "_")
olText = Replace(olText, "", "_")
GanzerPfad = OrdnerAdresse & Format(.ReceivedTime, "YYYYDDMM") & "-" & Format(.ReceivedTime, "hhmm") & "_" & olText & "_" & .Sender & ".msg"
.SaveAs GanzerPfad
End With
Next olItems
End Sub


Anzeige
AW: Kleiner Hinweis
10.09.2021 15:14:57
mumpel
Da fehlt ein Pfadtrenner. GanzerPfad = OrdnerAdresse & "\" & Format....
AW: Kleiner Hinweis
10.09.2021 15:41:21
Patric
Leider ist das nicht der Fehler. Der Pfadtrenner wurde bereits hier hinzugefügt:

OrdnerAdresse = "C:\DOKUMENTE\E-Mail Outlook_Sicherung\Inbox\"

Hast du evtl. noch einen weiteren Tipp?

AW: Kleiner Hinweis
10.09.2021 17:46:04
Luschi
Hallo Patric,
Du solltest per Vba natürlich auch überprüfen, ob der Pfad tatsächlich existiert:

If Dir(OrdnerAdresse, vbNormal) = "" Then
MsgBox "Pfad '" & OrdnerAdresse & "' existiert nicht!", 16, "Programmende...."
Exit Sub
End If
Gruß von Luschi
aus klein-Paris
Anzeige
Danke für die Hilfe - funktioniert
11.09.2021 20:06:17
Patric
Guten Abend Luschi
Genau hier war das Problem. Ich habe es ursprünglich auf einem Geschäfts-PC versucht (die OrdnerAdresse muss etwas anders als als zuhause zusammengestellt werden), zuhause klappt alles wunderbar.
Besten Dank und Grüsse nach klein-Paris
Patric

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige