14. august 2012 - 11:02Der er
47 kommentarer og 1 løsning
Automatisk flyt sendt post fra en postkasse til en anden?
Kammarater!
Nu har jeg brugt den halve formiddag på at finde ud af hvordan jeg kan få Outlook til automatisk at flytte mine sendte emails fra en 'Mailbox' til en anden.
Ved hjælp af 'Regler' kan man naturligvis bede den kopiere og flytte mails, men ikke til andre mailboxes (den reagerer simpelthen ikke, hvis man vælger en mappe udenfor den primære mailbox).
Jeg har også prøvet ved hjælp af VBA koder, men også her sker der ikke noget hvis jeg vælger en mappe udenfor min primære mailbox.
Jeg arbejder for en virksomhed, hvor vi ud over vores egen personlige postkasse, også deler en postkasse. Når vi svarer ryger svaret i vores egen 'sendt-post' mappe. Desværre medfører dette ofte en del besvær når folk glemmer at flytte deres email til den fælles 'sendt-post' mappe.
Jeg kan hverken ved brug af regler, eller ved brug af nedenstående VBA kode, overføre til den fælles sendt post mappe på trods af at der ikke er nogen problemer med at "trække og slippe".
Den VBA kode jeg har forsøgt er denne:
Private Sub Application_ItemSend(ByVal Item As Object, _ Cancel As Boolean) Dim objNS As NameSpace Dim objFolder As MAPIFolder On Error Resume Next Set objNS = Application.Session If Item.Class = olMail Then Set objFolder = objNS.PickFolder If Not objFolder Is Nothing And _ IsInDefaultStore(objFolder) And _ objFolder.DefaultItemType = olmailitem Then Set Item.SaveSentMessageFolder = objFolder Else Set objFolder = _ objNS.GetDefaultFolder(olFolderSentMail) Set Item.SaveSentMessageFolder = objFolder End If End If Set objFolder = Nothing Set objNS = Nothing End Sub
Public Function IsInDefaultStore(objOL As Object) As Boolean Dim objApp As Outlook.Application Dim objNS As Outlook.NameSpace Dim objInbox As Outlook.MAPIFolder Dim blnBadObject As Boolean On Error Resume Next Set objApp = objOL.Application If Err = 0 Then Set objNS = objApp.Session Set objInbox = objNS.GetDefaultFolder(olFolderInbox) Select Case objOL.Class Case olFolder If objOL.StoreID = objInbox.StoreID Then IsInDefaultStore = True Else IsInDefaultStore = False End If Case olAppointment, olContact, olDistributionList, _ olJournal, olMail, olNote, olPost, olTask If objOL.Parent.StoreID = objInbox.StoreID Then IsInDefaultStore = True Else IsInDefaultStore = False End If Case Else blnBadObject = True End Select Else blnBadObject = True End If If blnBadObject Then MsgBox "This function isn't designed to work " & _ "with " & TypeName(objOL) & _ " objects and will return False.", _ , "IsInDefaultStore" IsInDefaultStore = False End If Set objApp = Nothing Set objNS = Nothing Set objInbox = Nothing End Function
For god ordens skyld skal det også nævnes at jeg heller ikke 'automatiskt' ved hjælp regler eller VBA, kan overføre til andre mapper i den 'fælles' mailbox
Der kan godt sendes dertil. Jeg har forsøgt at udtænke en regel der kan fange de emails der lander i indbakken, men som er blevet videresendt, men det har ikke rigtigt kunnet lade sig gøre, da det også skal være muligt for os at sende emails til den fælles indbakke.
Jeg undrer mig i det hele taget over, hvorfor sulan det ikke er muligt at bruge regler eller vba mellem postkasser.
ja, det kan det godt. jeg har tænkt på det, men jeg er bange for at ændres navnet i emnefeltet , kan Outlooks 'søgefunktion' ikke finde 'lignende meddelser'.
Kunne også være et ord i selve teksten (body) - har jeg set, der også er mulighed for. Det ord/udtryk skulle så sættes via VBA før mailen blev sendt til den fælles.
Hvad mener du med "Outlooks søgefunktion" i den aktuelle forbindelse?
Når en email er besvaret i Outlook, får man, når man går ind på den eller en af de andre mails i samtalen, information om, at der er flere mails i tråden. Derudover et "klik her" for at se mere. Denne funktion er nødvendig, da vi bruger den til at finde ud af hvad der er blevet af videresendte og besvarede mails.
Hvis der er skal indsættes et ord i teksten, skal dette ske automatisk. Ellers er vi tilbage ved at folk bare glemmer at sætte ordet ind.
Sub Application_Newmail() Dim OlApp, Namespace Dim myinspector As Outlook.Inspector, mailobject As MailItem Dim antalMails As Integer Const regelTekst = "<++||++>" '<-- ajf. Const videreSendesTil = "mail@Adresse" '<-- ajf. Set OlApp = CreateObject("Outlook.Application") Set Namespace = OlApp.GetNamespace("MAPI") Set cfold = Namespace.GetDefaultFolder(olFolderInbox) antalMails = cfold.Items.Count
For m = 1 To antalMails Set mailobject = cfold.Items(m) With mailobject If .UnRead = True Then .Body = mailobject.Body & vbCr & regelTekst 'sæt tekst der kan regelsættes efter Set myForward = .Forward 'videresend myForward.Recipients.Add videreSendesTil 'til fælles postkasse myForward.Send
.UnRead = False .Save End If End With Next m End Sub
Tak for hjælpen. Du må dog lige hjælpe mig lidt yderligere. Jeg har ændret koden således:
---------------------------------------------
Sub Application_Newmail() Dim OlApp, Namespace Dim myinspector As Outlook.Inspector, mailobject As MailItem Dim antalMails As Integer Const regelTekst = "dennemailervideresendtfraprivatsendtpostioutlook" '<-- ajf. Const videreSendesTil = "XXXX@XXX.dk" '<-- ajf. Set OlApp = CreateObject("Outlook.Application") Set Namespace = OlApp.GetNamespace("MAPI") Set cfold = Namespace.GetDefaultFolder(olFolderInbox) antalMails = cfold.Items.Count
For m = 1 To antalMails Set mailobject = cfold.Items(m) With mailobject If .UnRead = True Then .Body = mailobject.Body & vbCr & dennemailervideresendtfraprivatsendtpostioutlook 'sæt tekst der kan regelsættes efter Set myForward = .Forward 'videresend myForward.Recipients.Add videreSendesTil 'til fælles postkasse myForward.Send
.UnRead = False .Save End If End With Next m End Sub
--------------------------------------------- Men får en fejl i : Set mailobject = cfold.Items(m)
hej igen. når jeg sletter As MailItem får jeg ingen fejl, men der bliver heller ikke indsat noget tekst og den sendte meddelse ligger stadig i min egen sendt post..
-"- skal erstattes af den tidligere defineret konstant regelTekst du har anvendt selve teksten uden "" - derfor opfattes den så variable - i dette tilfælde tom
Men det er de meddelelser jeg "besvarer", "videresender" og "nye mails" jeg sender, altså alt det der normalt ville ryge i min sendt post, jeg gerne vil have skal ryge i vores fælles sendt post mappe. Evt. bare som kopi. har vi misforstået hinanden?
** Nu har jeg brugt den halve formiddag på at finde ud af hvordan jeg kan få Outlook til automatisk at flytte mine sendte emails fra en 'Mailbox' til en anden. **
Jeg er rettet "", men der sker stadig ikke noget. Jeg forstår heller ikke rigtigt hvordan jeg kan være sikker på at den ryger i en bestemt sendt post mappe ud fra ovenstående VBA?
Private Sub Application_ItemSend(ByVal Item As Object, _ Cancel As Boolean) Const regelTekst = "dennemailervideresendtfraprivatsendtpostioutlook" Const videreSendesTil = "info@mim.dk" With Item emne = .Subject .Body = .Body & vbCr & regelTekst Set myForward = .Forward 'videresend myForward.Recipients.Add videreSendesTil 'til fælles postkasse myForward.Send End With End Sub
Der sker desværre stadig ikke noget. Skal jeg ikke på en eller anden måde fortælle den hvilken postkasse den skal smide den i? Du må undskylde hvis jeg er lidt tungnem, men copy-paster bare teksten ind i
"this outlook session" for at checke om den virker ikke? Skal jeg ændre noget i teksten?
Har testen i min Outlook, hvor videreSendesTil-adressen så var en anden. Det fungerede.
Flytning til den specielle mappe sker ikke før der bliver skrevet en regel, der undersøger om teksten: "dennemailervideresendtfraprivatsendtpostioutlook" findes i mailens tekst(body).
Har ikke prøvet den del.
Så ovenstående kan kopieres direkte ind i ThisOutlookSession.
så, nu virker det (jeg ved ikke hvad der er sket tidligere, slettede det hele og startede forfra).
Problemet er nu, at jeg så selv får et autosvar fra hovedpostkassen - "tak for din mail, som vi vil besvare inden, bla bla bla.. ) hver gang jeg sender en mail..
når jeg sender noget indeholdende ordet: dennemailervideresendtfraprivatsendtpostioutlook
videresendes det automatisk til xxx@xxx.dk
autosvaret er ved hjælp af regler filtret fra og lander i særskilt mappe.
dog er der opstået et nyt problem - nemlig at modtager dog den sendte post dobbelt i min egen sendt post nu... ?
----------
derudover skal "dennemailervideresendtfraprivatsendtpostioutlook" helst indsættes automatisk i svar. og flyttes automatisk fra indbakke i info@mXXX.dk til sendt post.
Hej Supertekst - vil du ikke have nogle point? Så smid et svar? Jeg fik rigeligt hjælp af dig. Det lykkedes aldrigt rigtigt, men du gjorde en solid indsats, og jeg synes at du fortjener det!
man kunne også bare lave en registrerings ændring ;)
HKEY_USERS\<user's SID*>\Software\Microsoft\Office\<version of Office**>\Outlook\preferences
opret Dword: "DelegateSentItemsStyle" herefter sæt Value til 1 genstat af Outlook ;) let fiks til hele firmaet
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.