#1.outlookのメール振り分けめんどくさい
個人的にちょいとめんどい
#2.とりあえずマクロ化(標準モジュールとして)
furiwake.bas
Sub mailFuriwake()
Dim oNamespace As NameSpace
Dim oFolder As Outlook.Folder 'フォルダー
Dim mITEM As Outlook.MailItem 'メールアイテム
Dim n As Integer 'ループのカウンター
Dim subFolder As Folder 'サブフォルダー1つ下を探る
Dim c As Integer 'フォルダのループカウンタ
'フォルダの日時
Dim folderDateTime As String
'フォルダの日付
Dim folderTime As String
'判定フラグ
Dim makeFolderFlag As Boolean
'year
Dim yearfolder As Outlook.Folder
'month
Dim monthfolder As Outlook.Folder
'date
Dim datefolder As Outlook.Folder
Set oApp = CreateObject("Outlook.Application")
' NameSpace オブジェクトへの参照を取得します。
Set oNamespace = oApp.GetNamespace("MAPI")
Set oFolder = oNamespace.GetDefaultFolder(olFolderInbox) '規定のフォルダー olFolderInbox=6 指定
'受信トレイ直下のアイテム・メールの件名を表示
'メール数分ループ
countNum = oFolder.Items.count
For n = countNum To 1 Step -1 'アイテム数分ループ
Set mITEM = oFolder.Items(n)
'受信時間
folderDateTime = mITEM.ReceivedTime
folderTime = Split(folderDateTime, " ")(0)
nen = Split(folderTime, "/")(0)
tuki = Split(folderTime, "/")(1)
hi = Split(folderTime, "/")(2)
'フォルダの存在チェック(年フォルダ)
For Each num In oFolder.Folders
' フォルダがあったら作らない
If nen = num Then
makeFolderFlag = True
Exit For
End If
Next
'フォルダを作成する必要がある場合
If makeFolderFlag = False Then
'受信フォルダ直下に日付のフォルダを作成する。
Set yearfolder = oFolder.Folders.Add(nen)
Else
'受信フォルダ直下に日付のフォルダを取得する。
Set yearfolder = oFolder.Folders(nen)
End If
'初期化
makeFolderFlag = False
'フォルダの存在チェック(月フォルダ)
For Each num In yearfolder.Folders
' フォルダがあったら作らない
If tuki = num Then
makeFolderFlag = True
Exit For
End If
Next
'フォルダを作成する必要がある場合
If makeFolderFlag = False Then
'受信フォルダ直下に日付のフォルダを作成する。
Set monthfolder = yearfolder.Folders.Add(tuki)
Else
'受信フォルダ直下に日付のフォルダを取得する。
Set monthfolder = yearfolder.Folders(tuki)
End If
'初期化
makeFolderFlag = False
'フォルダの存在チェック(日フォルダ)
For Each num In monthfolder.Folders
' フォルダがあったら作らない
If hi = num Then
makeFolderFlag = True
Exit For
End If
Next
'フォルダを作成する必要がある場合
If makeFolderFlag = False Then
'受信フォルダ直下に日付のフォルダを作成する。
Set datefolder = monthfolder.Folders.Add(hi)
Set sono1 = datefolder.Folders.Add("sono1")
Set sono2 = datefolder.Folders.Add("sono2")
Set etcFolder = datefolder.Folders.Add("etc")
Else
'受信フォルダ直下に日付のフォルダを取得する。
Set datefolder = monthfolder.Folders(hi)
Set artfolder = datefolder.Folders("sono1")
Set peacockfolder = datefolder.Folders("sono2")
Set etcFolder = datefolder.Folders("etc")
End If
'その1からの場合(件名にその1)
If InStr(mITEM.Subject, "その1") > 0 Then
'メールの移動
oFolder.Items(n).Move sono1
'その2からの場合
ElseIf InStr(mITEM.Subject, "その2") > 0 Then
'メールの移動
oFolder.Items(n).Move sono2
'そのほか
Else
'メールの移動
oFolder.Items(n).Move etcFolder
End If
'オブジェクト解放
Set sono1 = Nothing
Set sono2 = Nothing
set etcFolder = Nothing
makeFolderFlag = False
Next
'使用したオブジェクトの解放 = Nothing
Set mITEM = Nothing
Set subFolder = Nothing
Set oFolder = Nothing
Set oNamespace = Nothing
End Sub
ThisOutlookSessionで以下を記載
ThisOutlookSession
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Call deliver.mailFuriwake
End Sub
後は勝手に振り分けてくれる。ソースは汚いけど個人的に便利
フォルダの階層的には、
/2016/05/11/sono1/対象のメール
/2016/05/11/sono2/対象のメール
/2016/05/11/etc/対象のメール
といった感じで振り分けてくれる。
対象のメールが増えたら、改修しなきゃだけど、こっちの方が好きかな。日付ごとになるし。