Outlook - Makronaredba za stvaranje mapa

Problem

Često primam e-poštu koja ima "riječ" u naslovu e-pošte u formatu issue-xxxx, gdje je xxxx 4-znamenkasti broj. Napravio sam mapu poštanskog sandučića pod nazivom problemi. Ono što bih želio učiniti je makro pronaći sve poruke e-pošte s nizom formata issue-xxxx u naslovu i potražiti mapu pod problemima s istim imenom. Ako se ne pronađe, onda ga treba stvoriti. E-poštu treba premjestiti u tu podmapu.

Na primjer, pretpostavimo da e-pošta dolazi s riječju issue-1234. Kada se pokrene (nadamo se preko alatne trake), makronaredba bi trebala pronaći tu poruku e-pošte i provjeriti mapu pod nazivom issue-1234 pod mapom problema i izraditi je ako nije pronađena. E-poštu treba premjestiti u tu mapu s problemom-1234.

Nisam stvarno učinio bilo makro programiranje u prošlosti, tako da bilo kakvu pomoć o tome kako započeti bi bilo poštovati. Ako slučajno imate makronaredbu koja to već radi i želite podijeliti kod, to bi bilo još bolje.

Riješenje

'Datoteke u vlastite podmape

'Napisao Bryce Pepper ( )

'Traži predmet za broj projekta M ili Z (mora biti između 4-6 znamenki)

'te ih pohranjuje u podmapu projekta (stvorite mapu ako ne postoji)

'dodana podrška za P & R projekte 2009-03-03 B.Pepper

'dodao podršku za # da bi Bill Z. sretan 2009-03-04 B.Pepper

Ovdje je kôd:

 Dim WithEvents objInboxItems kao Outlook.Items Dim objDestinationFolder Kao Outlook.MAPIFolder Pod Application_Startup () Dim objNameSpace Kao Outlook.NameSpace Dim objInboxFolder Kao Outlook.MAPIFolder Postavi objNameSpace = Application.Session Set objInboxFolder = objNameSpace.GetDefaultFolder (olFolderInbox) Postavi objDestinationFolder = objInboxFolder.Parent.Folders ("Projekti") Kraj Sub 'Pokreni ovaj kôd da biste zaustavili svoje pravilo. Sub StopRule () Postavi objInboxItems = Ništa ne završava Sub 'Ovaj kod je stvarno pravilo. Privatni Sub objInboxItems_ItemAdd (ByVal Stavka kao Objekt) Dim objProjectFolder Kao Outlook.MAPIFolder Dim folderName Kao String Set objRegEx = CreateObject ("VBScript.RegExp") objRegEx.Global = False 'Traži e-mail subjekata koji sadrži broj projekta (M007439, Z6312) objRegEx .Pattern = "([M, Z, P, R, #] d {4, 6})" Postavi colMatches = objRegEx.Execute (Item.Subject) Ako colMatches.Count> 0 Onda za svaki myMatch In colMatches ako je lijevo $ (myMatch.Value, 1) = "#" Zatim folderName = "M" & Right $ ("00" & Mid $ (myMatch.Value, 2), 6) Else folderName = Lijevo $ (myMatch.Value, 1) & Desno $ ("00" i Mid $ (myMatch.Value, 2), 6) Kraj Ako je FolderExists (objDestinationFolder, folderName) tada postavite objProjectFolder = objDestinationFolder.Folders (folderName) Else Set objProjectFolder = objDestinationFolder.Folders.Add (folderName) Kraj Ako Item.Move objProjectFolder Sljedeći kraj Ako je postavljen objProjectFolder = Ništa ne završava Podfunkcija FolderExists (parentFolder As MAPIFolder, folderName As String) Dim tmpInbox kao MAPIFolder na pogrešci GoTo ha ndleError 'Ako mapa ne postoji, u sljedećem retku pojavit će se pogreška. Ta će pogreška uzrokovati da upravljač greškom ode u: handleError 'i preskoči True vrijednost povrata Set tmpInbox = parentFolder.Folders (folderName) FolderExists = Istina Izlaz Funkcija handleError: FolderExists = Funkcija lažnog kraja 

Zapamtite to

Hvala Peperu za ovaj savjet na forumu.

Prethodni Članak Sljedeći Članak

Top Savjeta