Outlook VBAでメールを簡単に検索する方法

パソコンパソコン・スマホ教室
スポンサーリンク

皆さん、Outlookで大量のメールの中から特定のメールを探すのに苦労したことはありませんか?実は、OutlookのVBA(Visual Basic for Applications)を使うと、簡単に目的のメールを見つけることができるんです。今回は、初心者の方でもわかりやすく、Outlook VBAを使ったメール検索の方法をご紹介します。

スポンサーリンク

Outlook VBAとは?

Outlookのイメージ

Outlookのイメージ

まず、Outlook VBAについて簡単に説明しますね。VBAとは、Microsoft Office製品に組み込まれているプログラミング言語で、Outlookでも活用できます。これを使うことで、Outlookの操作を自動化したり、カスタマイズしたりすることができるんです。

メールを検索するための基本的な方法

Outlook VBAでメールを検索するには、主に「Find」メソッドと「Restrict」メソッドの2つがあります。それぞれの特徴を見てみましょう。

Findメソッド

Findメソッドは、指定した条件に合致する最初のメールを見つける方法です。例えば、件名に「会議」という言葉が含まれるメールを探す場合、以下のように書きます。

vba
Dim myNamespace As Outlook.NameSpace
Dim myFolder As Outlook.Folder
Dim myItem As Outlook.MailItem

Set myNamespace = Application.GetNamespace("MAPI")
Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)
Set myItem = myFolder.Items.Find("[Subject] = '会議'")

この方法では、最初に見つかったメールだけが取得されます。

Restrictメソッド

一方、Restrictメソッドは、条件に合致するすべてのメールを取得する方法です。例えば、未読のメールをすべて取得したい場合、以下のように書きます。

vba
Dim myNamespace As Outlook.NameSpace
Dim myFolder As Outlook.Folder
Dim myItems As Outlook.Items
Dim filteredItems As Outlook.Items

Set myNamespace = Application.GetNamespace("MAPI")
Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)
Set myItems = myFolder.Items
Set filteredItems = myItems.Restrict("[UnRead] = True")

この方法では、未読のメールがすべて取得されます。

フィルターの使い方

メールを検索する際には、フィルターを使って条件を指定します。フィルターの書き方には、Jet構文DASL構文の2種類があります。

Jet構文

Jet構文は、SQLのWHERE句のような書き方です。例えば、件名が「報告書」のメールを探す場合、以下のように書きます。

vba
"[Subject] = '報告書'"

DASL構文

DASL構文は、より柔軟な検索が可能です。例えば、件名に「重要」という言葉が含まれるメールを探す場合、以下のように書きます。

vba
"@SQL=""urn:schemas:httpmail:subject"" LIKE '%重要%'"

このように、DASL構文では部分一致の検索も可能です。

実際の活用例

例えば、毎日大量のメールが届く中で、特定のプロジェクトに関する未読メールだけをチェックしたいとします。そんなとき、以下のようなコードを使うと便利です。

vba
Dim myNamespace As Outlook.NameSpace
Dim myFolder As Outlook.Folder
Dim myItems As Outlook.Items
Dim filteredItems As Outlook.Items
Dim mail As Outlook.MailItem

Set myNamespace = Application.GetNamespace("MAPI")
Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)
Set myItems = myFolder.Items
Set filteredItems = myItems.Restrict("[UnRead] = True AND [Subject] LIKE '*プロジェクト名*'")

For Each mail In filteredItems
Debug.Print mail.Subject
Next mail

このコードを使うと、未読かつ件名に「プロジェクト名」が含まれるメールをすべて表示できます。

よくある質問や疑問

フィルターの条件を複数指定できますか?

はい、できます。条件をANDやORで組み合わせることで、複数の条件を指定できます。例えば、未読でかつ差出人が「山田さん」のメールを探す場合、以下のように書きます。

vba
"[UnRead] = True AND [SenderName] = '山田'"

サブフォルダ内のメールも検索できますか?

はい、可能です。特定のサブフォルダを指定して検索することができます。例えば、「プロジェクト」という名前のサブフォルダ内のメールを検索する場合、以下のように書きます。

vba
Set myFolder = myFolder.Folders("プロジェクト")

今すぐ解決したい!どうしたらいい?

LINE公式

いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」

あなたはこんな経験はありませんか?

✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦

平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。

LINEでメッセージを送れば即時解決!

すでに多くの方が私の公式LINEからお悩みを解決しています。

最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。

誰でも無料で使えますので、安心して使えます。

問題は先のばしにするほど深刻化します。

小さなエラーがデータ消失重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。

あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。

相談しに行く

ぜひ、あなたの悩みを私に解決させてください。

まとめ

Outlook VBAを使うことで、メールの検索がとても効率的になります。最初は少し難しく感じるかもしれませんが、慣れてくると自分好みにカスタマイズできてとても便利です。ぜひ試してみてくださいね。他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。

コメント

タイトルとURLをコピーしました