Macro outlook e-mail onderwerp en verplaatsen naar map

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • magnafi
  • Registratie: Januari 2013
  • Laatst online: 18-02-2021
Hallo

Ik heb een macro waarbij met 1 druk op de knop mijn initialen voor het onderwerp in de email worden geplaatst.

Nu zou ik graag willen dat met die zelfde klik op de knop ook de email verplaatst wordt naar een map.

Ik heb op dit moment deze code:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Initialen()

Dim Item As Object
Dim SelectedItems As Selection

'selection gebruiken om meerdere mailtjes in een keer te doen

Set SelectedItems = Outlook.ActiveExplorer.Selection

For Each Item In SelectedItems

     With Item
     'onderwerp ophalen, initialen er voor en opslaan
     onderwerp0 = Item.Subject
     'pas in de volgende regel de initialen aan naar je eigen'

     Item.Subject = "TN -  " & onderwerp0
     Item.UnRead = False
     Item.Save
     End With
Next Item
End Sub


Ik kan na wat googelen wel wat voorbeelden vinden van macros voor het verplaatsen van email maar ik krijgt ze niet gecombineerd.

Weet iemand hier met meer kennis van macro's hoe ik dan kan oplossen.

Ik had deze gevonden op internet:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub email_ontvangen_verplaatsen()
 
    Dim objOutlook As Outlook.Application
    Dim objNamespace As Outlook.NameSpace
    Dim objSourceFolder As Outlook.MAPIFolder
    Dim objDestFolder As Outlook.MAPIFolder
    Dim objItem As MailItem
     
    Set objOutlook = Application
    Set objNamespace = objOutlook.GetNamespace("MAPI")
    Set objSourceFolder = objNamespace.GetDefaultFolder(olFoderInbox)
    Set objItem = objOutlook.ActiveInspector.CurrentItem
    Set objDestFolder = objNamespace.Folders("Support Compusoft NL").Folders("Afgehandeld")
 
    objItem.Move objDestFolder
               
    Set objDestFolder = Afgehandeld
End Sub

[ Voor 1% gewijzigd door Lustucru op 28-08-2018 19:59 ]

Beste antwoord (via magnafi op 30-08-2018 11:29)


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Ik heb de code tussen [code][/code] tags geplaatst. Dat leest beter. Doe je het een volgende keer zelf?

On topic:
De tweede macro heeft één regel die het werk doet:
code:
1
    objItem.Move objDestFolder

Je hebt daar dus een mailobject (objItem) voor nodig de folder waar het item naar toe moet (objdestfolder).

In de eerste macro heb je item al, en het enige wat dus nodig is dat je ook de bestemmingsfolder moet krijgen. Die regels voeg je toe aan je eerste macro en klaar ben je. Voor het mooie haal je alle overbodige regels weg en dan hou je ongeveer het volgende over:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub VoegInitialenToeEnVerplaats()

      Dim item As Object
      Dim destinationFolder As Outlook.MAPIFolder

      Set destinationFolder=Application.GetNamespace("MAPI").Folders.("Support Compusoft NL").Folders("Afgehandeld")

      For Each item In Outlook.ActiveExplorer.Selection

         item.Subject = "TN -  " & item.Subject
         item.UnRead = False
         item.Save
         item.Move destinationFolder
 
      Next item
End Sub

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Alle reacties


Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 14:25
Ik heb niet 100% helder wat je precies wilt..

Je wilt je initialen voor het onderwerp plaatsen, en dan... ?
Moet het concept van de mail worden opgeslagen in een folder, of moet de email, zodra hij is verzonden, opgeslagen worden in een folder?
En is dat altijd dezelfde folder, of wil je een bestaande folder kunnen kiezen?

Out-of-the-box: laat een 'regel' draaien op uitgaande (dus niet op binnenkomende!) mail.. Als het onderwerp begint met jouw initialen, verplaats je het bericht naar een map...
regels zijn regels

[ Voor 35% gewijzigd door breew op 28-08-2018 11:47 ]


Acties:
  • 0 Henk 'm!

  • magnafi
  • Registratie: Januari 2013
  • Laatst online: 18-02-2021
Oh sorry dat heb ik inderdaad niet goed aangegeven.

Het gaat om e-mail in de inbox van een gezamenlijk account.

De gene die de e-mail oppakt kan dan door een druk op de knop zijn initialen voor het onderwerp zetten.

Wat ik dus wil is dat als de knop voor de initialen wordt gebruikt de email ook gelijk verplaatst wordt naar de map afgehandeld.

Ik hoop dat het zo duidelijker is.

Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 14:25
Helder... wat doet het nu niet?
Krijg je een foutmelding? Of loopt de code maar is het resultaat niet wat je wilt?

Daarnaast: Wat is precies de workflow die je wilt? Wanneer moet "op de knop" gedrukt worden...
Kun je het eens beschrijven vanaf het moment dat de nieuwe mail in de inbox is verschenen? Het maatk bijvoorbeeld nogal uit of je de macro wilt draaien op het moment dat de mail geopend is, of wannere je hem selecteert in de inbox, of... of...

stap 1: nieuwe mail komt binnen in inbox
stap 2: ...
stap 3: ...
stap n: einde

[ Voor 70% gewijzigd door breew op 28-08-2018 15:04 ]


Acties:
  • 0 Henk 'm!

  • magnafi
  • Registratie: Januari 2013
  • Laatst online: 18-02-2021
Zoals het nu gaat:
Stap 1: e-mail komt binnen in de inbox
Stap 2: collega pakt deze op en doet wat die moet doen. bijvoorbeeld e-mail beantwoord/klant bellen
Stap 3: collega drukt op een aangemaakte knop die huidige macro activeert zodat de initialen voor het onderwerp worden geplaatst.
Stap 4: Collega verplaatst de mail handmatig naar de map afgehandeld.

Nu is het die de bedoeling dat stap 3 en 4 worden gecombineerd. Dus als er op de knop wordt gedrukt voor het toevoegen van de initialen dat dan ook gelijk de e-mail wordt verplaatst naar de map afgehandeld.

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Ik heb de code tussen [code][/code] tags geplaatst. Dat leest beter. Doe je het een volgende keer zelf?

On topic:
De tweede macro heeft één regel die het werk doet:
code:
1
    objItem.Move objDestFolder

Je hebt daar dus een mailobject (objItem) voor nodig de folder waar het item naar toe moet (objdestfolder).

In de eerste macro heb je item al, en het enige wat dus nodig is dat je ook de bestemmingsfolder moet krijgen. Die regels voeg je toe aan je eerste macro en klaar ben je. Voor het mooie haal je alle overbodige regels weg en dan hou je ongeveer het volgende over:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub VoegInitialenToeEnVerplaats()

      Dim item As Object
      Dim destinationFolder As Outlook.MAPIFolder

      Set destinationFolder=Application.GetNamespace("MAPI").Folders.("Support Compusoft NL").Folders("Afgehandeld")

      For Each item In Outlook.ActiveExplorer.Selection

         item.Subject = "TN -  " & item.Subject
         item.UnRead = False
         item.Save
         item.Move destinationFolder
 
      Next item
End Sub

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • MAX3400
  • Registratie: Mei 2003
  • Laatst online: 10-07 12:56

MAX3400

XBL: OctagonQontrol

Subtiele opmerking/hint: stap 1 & 2 hoort niet in Outlook maar in een (goed) ticketsysteem.

Want als ik een nachtje slecht geslapen heb, druk ik per ongeluk de macro in, mailtje verdwijnt ergens in een mapje, klant is nooit gebeld, half uur later meld ik me ziek want geen zin/moe.

Waar ik ook een klein beetje mee zit; waar komen de initialen precies vandaan? Ik zie nu in de code meerdere keren "TN" terugkomen maar houdt dat nu in dat je de macro per medewerker apart gaat aanmaken/installeren? Of is het (handiger) gebruik te maken van je ingelogde credentials (in VBS kan je dan kijken naar de value "objNetwork.UserName")?

Dit is toch niet voor die internationale software-ontwikkelaar he?

[ Voor 6% gewijzigd door MAX3400 op 28-08-2018 20:24 ]

Mijn advertenties!!! | Mijn antwoorden zijn vaak niet snowflake-proof


Acties:
  • 0 Henk 'm!

  • magnafi
  • Registratie: Januari 2013
  • Laatst online: 18-02-2021
@Lustucru Ik zal het de volgende keer zelf tussen de code tags plaatsen. Bedankt dat jij het nu gedaan hebt.
Als ik de code die jij voorstelde gebruik dan loopt die vast op de regel

Set destinationFolder=Application.GetNamespace("MAPI").Folders.("Support Compusoft NL").Folders("Afgehandeld'')"

Ik vermoed dat dit te maken heeft met de map naam of structuur. De map afgehandeld is een submap van de inbox map.

@MAX3400 Ik snap wat je bedoelt. Bij ons worden e-mails automatisch geïmporteerd in het ticketsysteem.
We gebruiken dit alleen zodat we in ons ticketsysteem maar ook in outlook terug kunnen vinden wie het heeft afgehandeld.

Het is nu inderdaad zo dat we per gebruiker zelf de initialen instellen. Mijn kennis van Macros is dusdanig klein dat ik niet wist dat het mogelijk zou zijn om te kijken naar de ingelogde gebruiker. Dat zou natuurlijk de mooiste optie zijn.

Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

magnafi schreef op woensdag 29 augustus 2018 @ 10:31:
Als ik de code die jij voorstelde gebruik dan loopt die vast op de regel

Set destinationFolder=Application.GetNamespace("MAPI").Folders.("Support Compusoft NL").Folders("Afgehandeld'')"


Ik vermoed dat dit te maken heeft met de map naam of structuur. De map afgehandeld is een submap van de inbox map.
tsja, dit pad komt letterlijk uit je eigen openingspost. Als dat niet klopt zul je het aan moeten passen. Hoe je de inboxmap opvraagt staat ook in je eigen openingspost, dus daar moet je met een beetje begrijpend lezen wel uit kunnen komen zolang je bedenkt dat de volgende regels code hetzelfde effect hebben:

Visual Basic:
1
2
3
4
5
6
7
'wat je vaak ziet:
set objvar1= foo
set objvar2= objvar1.bar
set objvar3 = objvar2.woot

'maar als je alleen objvar3 nodig hebt is dit ook goed:
set objvar3=foo.bar.woot

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • +1 Henk 'm!

  • magnafi
  • Registratie: Januari 2013
  • Laatst online: 18-02-2021
Bedankt voor alle info.

Het is me gelukt

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub VoegInitialenToeEnVerplaats()

      Dim item As Object
      Dim destinationFolder As Outlook.MAPIFolder

  Set NS = Application.GetNamespace("MAPI")
  Set sharedInbox = NS.Folders("Naam van de postbus").Folders("Inbox")
  Set sharedDestinationFolder = sharedInbox.Folders("Afgehandeld")

      For Each item In Outlook.ActiveExplorer.Selection

         item.Subject = "NL-TNI -  " & item.Subject
         item.UnRead = False
         item.Save
         item.Move sharedDestinationFolder
 
      Next item
End Sub
Pagina: 1