runner-ralf
Goto Top

OUTLOOK 2003 VBA Mails kopieren auf Festplatte

Hallo alle zusammen,

ich will mit Outlook VBA alle Mails im Ordner "test.pst" aus dem Ordner "Eingang" auf die Festplatte D:\archive mit dem Datum´, Uhrzeit und dem Betreff als Dateiname speichern. Ich krieg es einfach nicht hin.

Dim objOutlook
Dim objnSpace
Dim objFolder
Dim objmail
Dim objNewMail As MailItem


Set objOutlook = CreateObject("Outlook.Application")
Set objnSpace = objOutlook.GetNamespace("MAPI")
Set objFolder = objnSpace.Folders("Kerstin").Folders("merken")


For Each objNewMail In objFolder.Items
With objNewMail
.Copy ????????
End With
Next

Einen schönen Gruß


Ralf Dorn

Content-ID: 92630

Url: https://administrator.de/contentid/92630

Ausgedruckt am: 23.11.2024 um 05:11 Uhr

Logan000
Logan000 22.07.2008 um 13:39:40 Uhr
Goto Top
Moin

Als erstes würde ich dir zum Entwickelm empfehlen einen Verweis auf die Microsoft Outlook Object Library zu setzen.
Dann könntest du das so machen: (Ungetestet!!)
Dim objOutlook As Outlook.Application
Dim objnSpace As Outlook.NameSpace
Dim objFolder As Outlook.MAPIFolder
Dim objNewMail As Outlook.MailItem
Dim Filename as String 

Set objOutlook = CreateObject("Outlook.Application")  
Set objnSpace = objOutlook.GetNamespace("MAPI")  
Set objFolder = objnSpace.Folders("Kerstin").Folders("merken")  
For Each objNewMail In objFolder.Items

With objNewMail
     Filename = CStr(.SendOn) & " " & CStr(.Subject) & ".msg"  
    .SaveAs ("C:\MeinPfad\" & Filename )  
End With
Next 

Gruß L.
runner-ralf
runner-ralf 22.07.2008 um 14:41:06 Uhr
Goto Top
Hallo Logan000,

hat fast geklappt. Einmal SentOn und nicht Sendon face-wink und das Zweite ist, das er nach .save einen Laufzeitfehler bringt. Außerdem kommt die lästige Frage mit "Ein Programm versucht auf Daten von Outlook zuzugreifen....."

Laufzeitfehler -1767702276 (96a300FC)
Fehler beim ausführen der Operation

Code:

With objNewMail

Filename = CStr(.SentOn) & "_" & CStr(.Subject) & ".msg"
.SaveAs ("D:\outlook\" & Filename)

End With

Fällt dir noch was ein??

Gruß

Ralf

PS: Verweis auf Objekt war schon gesetzt.
Logan000
Logan000 22.07.2008 um 14:55:49 Uhr
Goto Top
Probiers mal so:
...
    .SaveAs "D:\outlook\" & Filename, olMSG  
...

Außerdem kommt die lästige Frage mit "Ein Programm versucht auf Daten von Outlook zuzugreifen....."
Nun das ist ja auch richtig.

Evtl. hilft dier dieser Link weiter.

Gruß L.
runner-ralf
runner-ralf 22.07.2008 um 15:01:29 Uhr
Goto Top
mpmmmhhh,

habe ich auch schon probiert, auch

"c:\temp\" & Filename, olMSG

funktioniert nicht.


kompletter Code:

Sub Mails_archivieren()

Dim objOutlook As Outlook.Application
Dim objnSpace As Outlook.NameSpace
Dim objFolder As Outlook.MAPIFolder
Dim objNewMail As Outlook.MailItem
Dim Filename As String

Set objOutlook = CreateObject("Outlook.Application")
Set objnSpace = objOutlook.GetNamespace("MAPI")
Set objFolder = objnSpace.Folders("Kerstin").Folders("merken")
For Each objNewMail In objFolder.Items

With objNewMail

Filename = CStr(.SentOn) & "_" & CStr(.Subject) & ".msg"
.SaveAs "c:\temp\" & Filename, olMSG
End With

Next

End Sub


Gruß

Ralf
runner-ralf
runner-ralf 22.07.2008 um 18:20:41 Uhr
Goto Top
Hallo,

entschuldige, dass ich dich noch einmal belästige. Ich weiß jetzt woran es liegt. In der Betreff Zeile sind manchmal Hochkomme, Leerzeichen, Fragezeichen usw. Außerdem im Datum und Zeit Punkte und Doppelpunkte.

Das datu und die Zeit habe ich schon angepasst mit Format aber beim Betreff weiß ich nicht wie ich die Leerzeichen und eventuelle Sonderzeichen rauskriegen soll.

Weißt du da was?

Gruß

Ralf
Logan000
Logan000 23.07.2008 um 13:08:45 Uhr
Goto Top
Moin

Mit Replace solte das gehen. Etwa so:
...
strSubject = Replace(strSubject," ","")  ' Leerzeichen ersetzen  
strSubject = Replace(strSubject,"'","")  ' Hochkomma ersetzen  
usw.
...

Gruß L.
runner-ralf
runner-ralf 23.07.2008 um 17:09:38 Uhr
Goto Top
Hallo L.,

vielen Dank. Jetzt funktioniert alles.

Einen schönen Gruß aus Bayern

Ralf
Logan000
Logan000 24.07.2008 um 10:11:59 Uhr
Goto Top
Das ist cool.
Sei doch bitte so nett und setze den Beitrag auf erledigt.

Schönen Gruß zurück vom anderen Ende
L.