| "Sten Christensen" <aogsc@brockstedt-rasmussen.dk> skrev i en meddelelse
 news:462b8642$0$145$edfadb0f@dread11.news.tele.dk...
 > Jeg er ved at prøve på at lave en makro i Outlook. Det jeg ønsker er en
 > let og hurtig adgang til at gemme e-mails i de mapper, hvor jeg har den
 > øvrige word-korrespondance. Jeg er klar over, at e.mails ikke uden videre
 > kan konverteres til word-format, men er tilfreds med at kunne gemme dem i
 > txt-format.
 > Filnavnet kan pasende være indholdet af emne feltet men med mulighed for
 > at supplere eller ændre navnet.
 > Mappen filen skal gemmes i skal selvfølgelig indtastes manuelt, men det
 > skulle helst også være den eneste manuelle operation.
 > Jeg bruger Windows XP, prof, og Office 2000.
 > Hvem kan hjælpe?
 >
 Der findes faktisk en hændelse, der hedder "Application_ItemSend" i Outlook,
 MEN den aktiveres FØR mailen afsendes - så du kan faktisk komme til at gemme
 en mail, som reelt IKKE er sent.
 
 Jeg bruger filedialogen fra Excel til at vælge, hvilken windowsmappe, der
 skal gemmes i, og mailen gemmes som en "mail" - som jo evt. skal genlæses i
 Outlook - men du 2-klikker jo bare på filen, hvis du vil genlæse mailen.
 
 Med ovenstående lille specialitet in mente kan du f.eks. gøre således:
 
 I ThisOutlookSession lægger du følgende:
 
 Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
 FolderN = BrowseFolder("Hvilken mappe vil du gemme i ?")
 If FolderN <> "" Then
 Item.SaveAs FolderN & "\" & StripIllegaleTegn(CStr(Item)) &  ".msg"
 End If
 End sub
 
 Og dette lægges ned i et tilføjet modul:
 
 Function BrowseFolder(S As String) As String
 Dim Exl As Excel.Application, Fd As FileDialog
 Set Exl = New Excel.Application
 Exl.Visible = False
 Set Fd = Exl.FileDialog(msoFileDialogFolderPicker)
 With Fd
 .Title = S
 .ButtonName = "Gem i denne mappe"
 If .Show = -1 Then
 ' Hvis der er trykket "gem"
 BrowseFolder = Fd.InitialFileName
 Else
 ' Hvis der trykkes annuller
 End If
 End With
 Exl.Quit
 Set Fd = Nothing
 Set Exl = Nothing
 End Function
 
 Function StripIllegaleTegn(F As String) As String
 Const Forbudt = "/\><*?""|:;"
 Const Tilladt = "-"
 Dim X As Byte, Y As Byte
 Dim ForbudtTegn As String
 For X = 1 To Len(Forbudt)
 ForbudtTegn = Mid(Forbudt, X, 1)
 For Y = 1 To Len(F)
 If InStr(1, F, ForbudtTegn) <> 0 Then
 Mid(F, InStr(1, F, ForbudtTegn)) = Tilladt
 End If
 Next Y
 Next X
 StripIllegaleTegn = F
 End Function
 
 
 
 
 |