outlookメールの添付ファイル名を検索するVBScriptを作成してみた
今回は、自分の仕事で使う目的で作成した「outlookを操作するVBScriptシリーズ」の恐らく最終回である。
これまでのこのシリーズの出し物は以下の通りである。
- outlookのメール一覧をExcelに貼り付けるためのVBScriptを作ってみた
- outlookからメールと添付ファイルを出力する(その2)
- outlookメールの添付ファイルを削除するVBScriptを作ってみた
今回は、outlookの添付ファイルを検索し、ファイル名の中に、指定した文字列を含むものを検索するスクリプトである。
使い方は、以下の通りである。
まず、事前準備として、本記事の最後に添付されている「search_for_attached_files_in_outlook.vbs」を任意の場所に置いておく。
あとは、outlook上で検索対象のメールを選択した状態で(もちろん複数選択可)、このvbsファイルをダブルクリックして実行するだけである。
実行すると「ファイル名の一部を指定してください。」というメッセージと入力ウィンドウが現れるので検索文字列を入力すると、検索完了後に、
- 1件でも見つかった場合は「N件のファイルが見つかりました。情報をクリップボードにコピーしました。」
- 1件も見つからなかった場合は「該当ファイルは見つかりませんでした。」
のいずれかを表示し終了する。
前者の場合は、Ctrl-v などの貼り付け操作で、Excelやテキストエディタなどにクリップボードの内容を貼りつけると
見つかった添付ファイル名, 該当メールの受信日時, 件名, 送信者
の一覧(各項目はタブ区切り)を見ることができる。
留意事項としては以下の通り。
- 一度に入力できる検索文字列は1つだけで、ファイル名の中に、その文字列を完全一致で含むものだけがヒットする。
- 実行中にoutlookへのアクセス許可を求める以下のダイアログが表示された場合は「許可」を選択する。
以下がスクリプトである。
Option Explicit
Dim objOA, objSelection, objItm, objAtt, objWS
Dim I, MySrch, MyCnt, Mystring
Set objOA = CreateObject("Outlook.Application")
Set objSelection = objOA.ActiveExplorer.Selection
If objSelection.Count = 0 Then
MsgBox "メールが選択されていません。"
WScript.Quit
End If
MySrch = InputBox("選択されたメールの添付ファイル名を検索します。" & vbCrLf & "ファイル名の一部を指定してください。")
If Len(MySrch) = 0 Then
WScript.Quit
End If
MyCnt = 0
Mystring = ""
For I = 1 To objSelection.Count
set objItm = objSelection.Item(I)
For Each objAtt In objItm.Attachments
If InStr(1,objAtt.FileName,MySrch,1) > 0 Then
MyCnt = MyCnt + 1
Mystring = Mystring & vbCrLf & objAtt.FileName & vbTab & objItm.ReceivedTime & vbTab & objItm.Subject & vbTab & objItm.Sender
End If
Next
Next
If MyCnt > 0 Then
Mystring = "ファイル名" & vbTab & "受信日時" & vbTab & "件名" & vbTab & "送信者" & Mystring
MsgBox(MyCnt & "件のファイルが見つかりました。情報をクリップボードにコピーしました。")
Set objWS = CreateObject("WScript.Shell")
objWS.Exec("clip").StdIn.Write Mystring
Else
MsgBox("該当ファイルは見つかりませんでした。")
End If
ファイルのダウンロードは、以下のリンクを右クリックで「保存」(ファイルの文字コードは SJIS)
ダウンロード - search_for_attached_files_in_outlook.vbs
では。
| 固定リンク
コメント