Alle eMails in Outlook-Ordnern speichern
Hallo!
Ich müßte folgendes realisieren:
alle eMails, die in Outlook gespeichert sind, sollen inklusive Anhängen in Dateien "exportiert" werden.
Ich dachte mir, ich laufe über alle Ordner, lege neue ggf. per VBSkript an, und speichere einfach alles, was sich selbst eMail nennt über die Funktion "Speichern unter..." als .msg-Datei bzw. als .msg-unicode-Datei
Leider fehlen mir grundlegende Infos:
Leider gibt es oder finde ich keinen Makrorekorder mehr, sonst würde ich einiges dazu vermutlich selbst recht einfach herausbekommen...
Meine Fragen wären:
- Wo kann ich alle Befehle von VBSkript nachschlagen? Kennt jemand ein Tutorial?
- Wie kann ich eine eMail über VBSkript speichern bzw. wie lautet der entsprechende Befehl/die Funktion?
- Wie bekomme ich die Inhalte eines Ordners?
Wie ich einen walk über Ordner machen kann habe ich glaube ich schon herausgefunden, allerdings bin ich mir nicht sicher, ob ich damit nur eMail-Ordner erwische.
So sollte ich doch grundsätzlich zum Ziel kommen, oder hat jemand eine bessere Idee?
Ihr seht ja wo es noch überall an einem Plan meinerseits mangelt. Habe ganz früher mal VBSkript programmiert, aber das ist inzwischen schon wieder hinten aus meinem Gehirn rausgepurzelt...
Vielen Dank für Eure Hilfe,
Jens
Ich müßte folgendes realisieren:
alle eMails, die in Outlook gespeichert sind, sollen inklusive Anhängen in Dateien "exportiert" werden.
Ich dachte mir, ich laufe über alle Ordner, lege neue ggf. per VBSkript an, und speichere einfach alles, was sich selbst eMail nennt über die Funktion "Speichern unter..." als .msg-Datei bzw. als .msg-unicode-Datei
Leider fehlen mir grundlegende Infos:
Leider gibt es oder finde ich keinen Makrorekorder mehr, sonst würde ich einiges dazu vermutlich selbst recht einfach herausbekommen...
Meine Fragen wären:
- Wo kann ich alle Befehle von VBSkript nachschlagen? Kennt jemand ein Tutorial?
- Wie kann ich eine eMail über VBSkript speichern bzw. wie lautet der entsprechende Befehl/die Funktion?
- Wie bekomme ich die Inhalte eines Ordners?
Wie ich einen walk über Ordner machen kann habe ich glaube ich schon herausgefunden, allerdings bin ich mir nicht sicher, ob ich damit nur eMail-Ordner erwische.
Option Explicit
Sub ListAllFolders()
Dim myfolder As MAPIFolder
For Each myfolder In Application.Session.Folders
ShowOneFolder myfolder, 1
Next
End Sub
Sub ShowOneFolder(f As MAPIFolder, depth As Integer)
Dim fsub As MAPIFolder
Dim file As MAPIFile
Debug.Print "Tiefe: " & depth & " Ordner: " & f.name
+++ ERZEUGE ORDNER AUF DISK +++
fsub.createFolder
+++ LIEFERE ALLE DATEIEN IN ORDNER +++
For Each file in f.Files
StoreMailOnDisk file
Next
+++
For Each fsub In f.Folders
ShowOneFolder fsub, depth + 1
Next
End Sub
Sub StoreMailOnDisk()
Dim file As MAPIFolder
+++ SPEICHERE DATEI +++
file.save
End Sub
So sollte ich doch grundsätzlich zum Ziel kommen, oder hat jemand eine bessere Idee?
Ihr seht ja wo es noch überall an einem Plan meinerseits mangelt. Habe ganz früher mal VBSkript programmiert, aber das ist inzwischen schon wieder hinten aus meinem Gehirn rausgepurzelt...
Vielen Dank für Eure Hilfe,
Jens
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 65622
Url: https://administrator.de/contentid/65622
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo, habe vor kurzem etwas ähnliches geschrieben. Poste es hier mal rein. Mit diesem kannst du alle mails abgreifen die markiert sind.
Sub MailsSpeichern()
Dim objekt As Object
Dim myMail As Outlook.MailItem
Dim objRcp As Recipient
Dim absender As String
Dim uhrzeitDatei As String
Dim typeMail As String
Dim empfaenger As String
Dim Benutzer As String
Dim sqlstr As String
Dim dateiname As String
Dim empfangsmail As Boolean
Dim oConn As ADODB.Connection
Dim oRS As Recordset
Dim oRSKunde As Recordset
Dim sConn As String
Dim Kunde As String
For Each objekt In Application.ActiveExplorer.Selection
Set myMail = objekt
'auslesen der Nötigen Daten aus der mail
If UCase(myMail.SenderName) = UCase(Application.Session.CurrentUser) Then
' falls es sich um eine versendete mail Handelt
empfangsmail = False
For Each objRcp In myMail.Recipients
empfaenger = objRcp.Address
End If
End If
absender = myMail.SenderName
Next objRcp
Else
' falls es sich um eine empfangene Mail handelt
empfangsmail = True
empfaenger = myMail.ReceivedByName
If oRSKunde.EOF = False Then
empfaenger = CStr(oRSKunde(0))
Else
…
End If
absender = myMail.SenderEmailAddress
End If
End If
uhrzeitDatei = Format(myMail.ReceivedTime, "yyyy_mm_dd-hh_mm")
'abspeichern der mail als Datei
dateiname = absender + "-" + uhrzeitDatei + "Uhr.msg"
myMail.SaveAs "C:\Entsprechender Ordner \" & dateiname
Next
End Sub
Könnte zwar sein, das durch das zusammenkopieren jetzt einige fehler drinne sind. Aber ich hoffe du siehst worauf es ankommt. Wenn nicht frag mich nochmal.
Wenn du über einen exhange server interne mailadresse bekommst, wirst du allerdings ein kleines Problem bekommen, an dem ich auch noch zu kämpfen habe. Aber das "normale" abspeichern sollte so kein Problem sein.
cu H2SO3-
Sub MailsSpeichern()
Dim objekt As Object
Dim myMail As Outlook.MailItem
Dim objRcp As Recipient
Dim absender As String
Dim uhrzeitDatei As String
Dim typeMail As String
Dim empfaenger As String
Dim Benutzer As String
Dim sqlstr As String
Dim dateiname As String
Dim empfangsmail As Boolean
Dim oConn As ADODB.Connection
Dim oRS As Recordset
Dim oRSKunde As Recordset
Dim sConn As String
Dim Kunde As String
For Each objekt In Application.ActiveExplorer.Selection
Set myMail = objekt
'auslesen der Nötigen Daten aus der mail
If UCase(myMail.SenderName) = UCase(Application.Session.CurrentUser) Then
' falls es sich um eine versendete mail Handelt
empfangsmail = False
For Each objRcp In myMail.Recipients
empfaenger = objRcp.Address
End If
End If
absender = myMail.SenderName
Next objRcp
Else
' falls es sich um eine empfangene Mail handelt
empfangsmail = True
empfaenger = myMail.ReceivedByName
If oRSKunde.EOF = False Then
empfaenger = CStr(oRSKunde(0))
Else
…
End If
absender = myMail.SenderEmailAddress
End If
End If
uhrzeitDatei = Format(myMail.ReceivedTime, "yyyy_mm_dd-hh_mm")
'abspeichern der mail als Datei
dateiname = absender + "-" + uhrzeitDatei + "Uhr.msg"
myMail.SaveAs "C:\Entsprechender Ordner \" & dateiname
Next
End Sub
Könnte zwar sein, das durch das zusammenkopieren jetzt einige fehler drinne sind. Aber ich hoffe du siehst worauf es ankommt. Wenn nicht frag mich nochmal.
Wenn du über einen exhange server interne mailadresse bekommst, wirst du allerdings ein kleines Problem bekommen, an dem ich auch noch zu kämpfen habe. Aber das "normale" abspeichern sollte so kein Problem sein.
cu H2SO3-