Hallo,
ganz allgemein: alle deine Makros haben Parameter:
Sub Makroname(Parameterliste)
'...
End Sub
Makros, die Parameter haben, werden nicht in der Liste mit Makros, die man mit ALT+F8 aufruft, aufgeführt.
Bei dir kommt noch etwas spezielles dazu: du benutzt Events. Das sind Makros, die in bestimmten Situationen automatisch ausgeführt werden.
zB. nehme ich an, dass das makro
Private Sub Application_Startup()
automatisch beim Start von Outlook ausgeführt wird.
Und wegen dieser Codezeile
Private WithEvents Items As Outlook.Items
nehme ich an, dass folgendes Makro:
Private Sub Items_ItemAdd(ByVal Item As Object)
ausgeführt wird, wenn der Items-Collection ein weiteres Item hinzugefügt wird.
Du müsstest also Outllook neu starten und eine E-Mail in den bestimmten Ordner verschieben / kopieren, damit dein Makro ausgeführt wird.
Events zu benutzen, davon rate ich dir ab, da du in meinen Augen zu wenig Ahnung hast, um selbst herauszufinden, ob deine Makros nun ausgeführt werden, oder nicht. Das ist bei der Arbeit mit Events elementar um testen zu können.
Sorry, ich dachte bei dir funktioniert alles und es soll lediglich ein anderer Ordner benutzt werden.
Daher schlage ich vor, du bleibst bei deiner Idee, das Mkaro von Hand mit ALT+F8 aufzurufen. Ich kopiere dir deinen bisherigen Code mal dahingehend um:
Public Sub saveMyMails()
Dim Ns As Outlook.Namespace
Dim objMail As Object
Dim dtDate As Date
Dim sPath As String
Dim sName As String
Dim sExt As String
sPath = "d:\mails"
sExt = ".msg"
Set Ns = Application.GetNamespace("MAPI")
For Each objMail In Ns.GetDefaultFolder(olFolderInbox).Folders("Dein Unterordner").Items
If TypeOf objMail Is Outlook.MailItem Then
sName = objMail.Subject
ReplaceCharsForFileName sName, "_"
dtDate = objMail.ReceivedTime
sName = Format(dtDate, "yyyymmdd", vbUseSystemDayOfWeek, _
vbUseSystem) & Format(dtDate, "-hhnnss", _
vbUseSystemDayOfWeek, vbUseSystem) & "-" & sName & sExt
objMail.SaveAs sPath & sName, olSaveAsMsg
End If
Next
End Sub
Private Sub ReplaceCharsForFileName(sName As String, _
sChr As String _
)
sName = Replace(sName, "/", sChr)
sName = Replace(sName, "", sChr)
sName = Replace(sName, ":", sChr)
sName = Replace(sName, "?", sChr)
sName = Replace(sName, Chr(34), sChr)
sName = Replace(sName, "<", sChr)
sName = Replace(sName, ">", sChr)
sName = Replace(sName, "|", sChr)
End Sub
Testen kann ich den Code nicht, da ich Outlook nicht installiert habe.
Grüße, Ulrich
|