Outlook - フォルダを作成するためのマクロ

問題

xxxxは4桁の数字であるissue-xxxxの形式で、電子メールのタイトルに「単語」が含まれているEメールをよく受け取ります。 issuesというメールボックスフォルダを作成しました。 マクロにやりたいことは、タイトルにissue-xxxxという形式の文字列が含まれているすべてのEメールを見つけて、同じ名前のissueの下にあるフォルダーを探すことです。 見つからない場合は、作成する必要があります。 その後、メールをそのサブフォルダに移動する必要があります。

たとえば、電子メールにissue-1234という単語が含まれているとします。 マクロを実行すると(おそらくツールバーから)、その電子メールを見つけてissuesフォルダの下にissue-1234というフォルダを確認し、見つからなかった場合は作成します。 メールはそのissue-1234フォルダに移動する必要があります。

私は過去に実際にマクロプログラミングをしたことがないので、始める方法についてのどんな助けでも評価されるでしょう。 あなたがたまたまこれを既にしているコードを共有したいと思うならば、それはさらに良いでしょう。

溶液

'自分のサブフォルダにプロジェクトをファイルする

'ブライスペッパーによって書かれた( )

'MまたはZプロジェクト番号の件名を検索します(4〜6桁の数字でなければなりません)

'およびそれらをプロジェクトサブフォルダーに保存します(フォルダーが存在しない場合はフォルダーを作成します)。

'P&Rプロジェクトのサポートを追加しました2009-03-03 B.Pepper

'Bill Zを幸せにするための#のサポートを追加しました。2009-03-04 B.Pepper

これがコードです:

 Dim WithEvents objInboxItemsとしてOutlook.Items Dim objDestinationFolderとしてOutlook.MAPIFolder Sub Application_Startup()Dim objNameSpaceとしてOutlook.NameSpace Dim objInboxFolderとしてOutlook.MAPIFolder Set objNameSpace = Application.Session Set objDestinationFolder = objInboxFolder.Parent.Folders( "Projects")End Sub 'ルールを停止するには、このコードを実行します。 Sub StopRule()objInboxItems = Nothing End Subを設定します。 'このコードは実際のルールです。 プライベートSub objInboxItems_ItemAdd(ByVal Item as Object)Outlook objProjectFolder As Outlook.MAPIFolder Dim folderName文字列として設定objRegEx = CreateObject( "VBScript.RegExp")objRegEx.Global = Falseプロジェクト番号(M007439、Z6312)を含む電子メールの件名を検索.Pattern = "([M、Z、P、R、#] d {4, 6})" colMatches = objRegEx.Execute(Item.Subject)の場合colMatches.Count> 0の場合各myMatchの場合colMatchesの場合左$の場合(myMatch.Value、1)= "#"それからfolderName = "M"&Right $( "00"&Mid $(myMatch.Value、2)、6)その他folderName = Left $(myMatch.Value、1)& Right $( "00"&Mid $(myMatch.Value、2)、6)FolderExists(objDestinationFolder、folderName)の場合は終了し、objProjectFolder = objDestinationFolder.Folders(folderName)を設定する。 Item.Move objProjectFolderの場合は終了objProjectFolderの次の場合は終了=なし終了Sub関数FolderExists(MAPFolderとしてのparentFolder、StringとしてのfolderName)Dim tmpInboxとしてのMAPIFolderエラーGoTo ha ndleError 'フォルダが存在しない場合、次の行にエラーが発生します。 そのエラーにより、エラーハンドラは:handleError 'に移動し、Trueの戻り値をスキップします。Set tmpInbox = parentFolder.Folders(folderName)FolderExists = True Exit Function handleError:FolderExists = False End Function 

ご了承ください

フォーラムでこのヒントを提供してくれたPepperに感謝します。

前の記事 次の記事

トップのヒント