5

お世話になっております。

Outlookメール関連では

  • Outlook 条件を指定して対象メール件数取得
  • Outlook 条件を指定して対象メール保存

はあるものの、この条件指定の「メール移動」機能はないようだったので、スクリプトを修正してみました。

(WinActor6.3.0/Outlook2016で動作確認)

なお、メールの条件判定や移動をするライブラリは現在、以下のプチライブラリがあります。

<修正元のライブラリ>

 20_メール関連>01_Outlook操作>Outlook 条件を指定して対象メール件数取得.ums6

<スクリプト修正・追加

【修正箇所①】---冒頭の宣言

searchFolder = !検索対象フォルダ!
splitChr = !区切り文字|\,/,#,$,%!

  ↓

searchFolder = !検索対象フォルダ!
dstFolder = !移動先フォルダ!     '  メールを移動させる対象のフォルダ
splitChr = !区切り文字|\,/,#,$,%!

【修正箇所②】---パラメタの有効性確認

If searchFolder = "" Then
     Err.Raise 1, "", "検索対象フォルダを入力してください。"
     WScript.Quit()
End If

  ↓

If searchFolder = "" Then
     Err.Raise 1, "", "検索対象フォルダを入力してください。"
     WScript.Quit()
End If
If dstFolder = "" Then
     Err.Raise 1, "", "移動先フォルダを入力してください。"
     WScript.Quit()
End If

【修正箇所③】---メール保存メイン実行部

     SetUMSVariable $検索件数$, oOlSubjectResults.Count

End Sub

  ↓

     SetUMSVariable $検索件数$, oOlSubjectResults.Count

     If oOlSubjectResults.Count = 0 Then
     WScript.Quit
     End If

     '移動先フォルダを設定
     Dim oOlStores2
     Dim oOlStore2
     Dim oOlFold2
     arrayStrings = Split(dstFolder, splitChr)
     Set oOlStores2 = oOlns.Stores
     Set oOlStore2 = oOlStores2(arrayStrings(0))
     Set oOlFold2 = oOlStore2.GetRootFolder
     For i = LBound(arrayStrings) + 1 To UBound(arrayStrings)
     Set oOlFold2 = oOlFold2.Folders(arrayStrings(i))
     Next

     ' メール移動
     Dim i
     For i = oOlSubjectResults.Count To 1 Step - 1
     oOlSubjectResults(i).Move oOlFold2
     Next

End Sub

 

メールの移動に関しては、

わざわざWinActorを使うよりもメールの自動振り分けを使ったほうが正確であることもあります。

しかし、ライブラリでメールを保存した後にそのメールを移動させたい、のような需要がもしあるなら、

参考になれば幸いです。

そしてできれば、動作がもっとちゃんと保障される公式ライブラリとして展開してくれればうれしいです。

Yuzunoki 質問の投稿
回答とコメントは、会員登録(無料)で閲覧できるようになります。