Outlook - Makro untuk membuat folder

Isu

Saya menerima e-mel dengan kerap yang mempunyai "kata" dalam tajuk e-mel dalam format terbitan-xxxx, di mana xxxx adalah nombor 4 digit. Saya telah membuat folder peti mel yang dipanggil isu. Apa yang saya ingin macro lakukan ialah mencari semua e-mel dengan rentetan format-xxxx isu dalam tajuk dan mencari folder di bawah isu-isu dengan nama yang sama. Jika seseorang tidak dijumpai, maka ia harus dibuat. E-mel kemudiannya akan dipindahkan ke subfolder itu.

Contohnya, katakan e-mel datang dengan perkataan word-1234. Makro, apabila berjalan (semoga melalui bar alat), harus mencari e-mel itu dan semak folder yang dipanggil isu-1234 di bawah folder isu dan buat jika ia tidak dijumpai. E-mel kemudiannya akan dipindahkan ke folder-1234 isu itu.

Saya tidak pernah melakukan apa-apa pengaturcaraan makro pada masa lalu, jadi apa-apa bantuan tentang bagaimana untuk memulakan akan dihargai. Jika anda mempunyai makro yang melakukan ini, dan ingin berkongsi kod itu, itu akan menjadi lebih baik.

Penyelesaian

'Projek fail di subfolder mereka sendiri

'Ditulis oleh Bryce Pepper ( )

'Carian subjek untuk nombor projek M atau Z (mesti antara 4-6 digit)

'dan failnya dalam subfolder projek (buat folder jika tidak ada)

'tambah sokongan untuk projek P & R 2009-03-03 B.Pepper

'tambah sokongan # untuk membuat Bill Z. bahagia 2009-03-04 B.Pepper

Berikut ialah kod:

 Dim WithEvents objInboxItems As Outlook.Items Dim objDestinationFolder As Outlook.MAPIFolder Sub Application_Startup () Dim objNameSpace As Outlook.NameSpace Dim objInboxFolder As Outlook.MAPIFolder Set objNameSpace = Application.Session Set objInboxFolder = objNameSpace.GetDefaultFolder (olFolderInbox) Set objInboxItems = objInboxFolder.Items Tetapkan objDestinationFolder = objInboxFolder.Parent.Folders ("Projek") Akhir Sub 'Jalankan kod ini untuk menghentikan peraturan anda. Sub StopRule () Set objInboxItems = Tiada Akhir Sub 'Kod ini adalah peraturan yang sebenarnya. ObjRegEx = CreateObject ("VBScript.RegExp") objRegEx.Global = False 'Mencari subjek e-mel yang mengandungi nombor projek (M007439, Z6312) objRegEx "Set colMatches = objRegEx.Execute (Item.Subject) Jika colMatches.Count> 0 Kemudian Untuk Setiap myMatch Dalam colMatches Jika Kiri $ (myMatch.Value, 1) = "#" Kemudian folderName = "M" & Kanan $ ("00" & Mid $ (myMatch.Value, 2), 6) Lain folderName = Kiri $ (myMatch.Value, Seterusnya objProjectFolder = objDestinationFolder.Folders (folderName) Lain Set objProjectFolder = objDestinationFolder.Folders.Add (folderName) Akhir Jika Item.Move objProjectFolder Seterusnya Seterusnya Jika Tetapkan objProjectFolder = Tiada Fungsi Sub Akhir FolderExists (parentFolder Sebagai MAPIFolder, folderName As String) Dim tmpInbox Sebagai MAPIFolder On Error GoTo ha ndleError 'Jika folder tidak ada, akan ada ralat di baris seterusnya'. Kesalahan itu akan menyebabkan pengendali ralat pergi ke: handleError 'dan melangkau nilai pulangan True Set tmpInbox = parentFolder.Folders (folderName) FolderExists = handle Exit FunctionError: FolderExists = False End Function 

Perhatikan bahawa

Terima kasih kepada Lada untuk tip ini di forum.

Artikel Sebelumnya Artikel Seterusnya

Tip-Tip Utama