Hallo,
ich möchte mir ein Makro zur Mailsicherung einbauen. Hab dies auch schon herausgefunden und es funktioniert auch - bis auf die Fehlermeldung der Laufzeitüberschreitung.
Wer kennt sich damit aus??? Die Sicherung der Mails funktioniert - wenn aber sehr viele Mails auf dem Datensicherungsordner gespeichert werden habe ich den Laufzeitfehler „Z147286788(800300fcy:“ Fehler beim Ausführen der Operation.
Hier die Anleitung der Makroerstellung damit Ihr das auch einmal ausprobieren könnt:
Optimal wäre es, alle Nachrichten eines Ordners einzeln im Nachrichten-Format (*.msg) in einem einzigen Arbeitsschritt speichern zu können. Die Einzeldateien lassen sich dann zum Beispiel nach dem Brennen auf CD einfach per Doppelklick öffnen, so dass nicht nur Formatierungen und Header-Informationen, sondern auch die Anhänge erhalten bleiben. Eine kleine VBA-Routine hilft weiter:
Wechseln Sie mit Alt+F11 in die VBA-Entwicklungsumgebung.
Geben Sie die folgende Prozedur „SaveAllMsgs“ und die Funktion „FileSysName()“ in einem vorhandenen oder einem neuen Modul ein:
Sub SaveAllMsgs()
Dim objNamespace As NameSpace
Dim objFolder As MAPIFolder
Dim objTmp As Object
Dim Cnt&
Const cstrFolder = „C:\Test\Outlook-Nachrichten“
Set objNamespace = GetNamespace(„MAPI“)
Set objFolder = objNamespace.PickFolder
If objFolder Is Nothing Then Exit Sub
If objFolder.DefaultItemType olMailItem Then
Beep
MsgBox „Ordner ist kein Nachrichtenordner!“, _
vbOKOnly + vbExclamation, „!!! Problem !!!“
Exit Sub
End If
Cnt = 0
For Each objTmp In objFolder.Items
objTmp.SaveAs cstrFolder & _
FileSysName(objTmp.Subject), olMSG
Cnt = Cnt + 1
Next objTmp
Beep
If Cnt > 0 Then
MsgBox „Es wurden " & CStr(Cnt) & _
" Nachrichten in " & _
cstrFolder & " gesichert…“, _
vbOKOnly + vbInformation, _
„Alle Nachrichten speichern:“
Else
MsgBox „Keine Nachrichten zum Speichern gefunden!“, _
vbOKOnly + vbExclamation, _
„Alle Nachrichten speichern:“
End If
End Sub
Function FileSysName(strSubject As String) As String
Dim strInvalid
Dim I&
strInvalid = „/:+*?|“ & Chr$(34)
For I = 1 To Len(strSubject)
If InStr(strInvalid, Mid$(strSubject, I, 1)) 0 Then
Mid$(strSubject, I, 1) = „_“
End If
Next I
FileSysName = strSubject & „.msg“
End Function
Passen Sie bei der Eingabe die folgende Zeile auf das Verzeichnis an, in das die Nachrichten auf Ihrem System gespeichert werden sollen:
Const cstrFolder = „C:\Test\Outlook-Nachrichten“
Achten Sie darauf, dass das Verzeichnis vor dem Start der Lösung angelegt sein muss und die Pfadangabe einen abschließenden Backslash „“ beinhaltet!
Sichern Sie die Änderungen und verlassen Sie die VBA-Entwicklungsumgebung durch einen Klick auf das Schließen-Symbol oben rechts in der Titelleiste (kleines „X“).
Zurück in Outlook klicken Sie mit der rechten Maustaste auf eine Symbolleiste, wählen Sie Anpassen im Kontextmenü an und wechseln Sie im folgenden „Anpassen“-Dialog auf die Registerkarte „Befehle“.
Stellen Sie die Liste „Kategorien“ auf „Makros“ und ziehen Sie den Eintrag „Modulname.SaveAllMsgs“ in die gewünschte Symbolleiste.
Klicken Sie mit der rechten Maustaste auf das neue Symbol und nehmen Sie im Eigenschaften-Menü die gewünschten Einstellungen bezüglich Bezeichnung und Gruppierung vor.
Klicken Sie im „Anpassen“-Dialog auf die Schaltfläche Schließen.
In Zukunft können Sie nun alle Nachrichten eines Outlook-Ordners in das Verzeichnis speichern, das Sie in der Prozedur „SaveAllMsgs“ festgelegt haben. Dazu zeigt die Lösung zunächst eine Ordnerauswahl an, in der Sie den gewünschten Nachrichten-Ordner auswählen. In einer Schleife werden dann alle Nachrichten der Reihe nach in das angegebene Verzeichnis gespeichert. Als Dateiname wird die Betreffzeile der jeweiligen Nachricht verwendet. Ungültige Zeichen, die im Dateisystem nicht verwendet werden dürfen, filtert dazu die Funktion „FileSysName()“ heraus und ersetzt sie durch Unterstriche „_“. Wenn die Prozedur ihre Arbeit erledigt hat, wird eine kleine Abschlussmeldung angezeigt, die Sie über die Anzahl der gespeicherten Nachrichten informiert.
Bitte beachten Sie, dass beim Zugriff auf Nachrichten die Sicherheitsabfrage von Outlook aktiviert wird. Gewähren Sie hier je nach Anzahl der zu speichernden Nachrichten den Zugriff für 5 bis 10 Minuten.
Danke
Hans