outlook-vba
はじめに第2部:店舗とトップレベルのフォルダ
サーチ…
前書き
ストアとそれに含まれるフォルダーの紹介の最初の部分。アクセス可能なストアの名前とアクセス可能なストアの名前とその中のトップレベルのフォルダを表示するマクロが含まれています。
2.1予想される事前知識
- あなたはOutlookユーザーで、「電子メール」、「受信時刻」、「件名」、「フォルダペイン」などの用語を理解しています。
- OutlookのVisual Basic Editorにアクセスしてモジュールを作成する方法を知っています。必要に応じてはじめに第1部を参照してください。
- あなたには少なくともVBAの基本知識があります。私は説明なしにサブルーチンと変数を宣言します。 Withs、Ifs、Loopsを説明なしで使用します。私は何かがコレクションだと伝えます。コードをモジュールにコピーして実行するように指示します。ほとんどがExcel VBA用ですが、Excelで言語を言語よりも使用することに集中していますが、多くのオンラインチュートリアルがあります。 「VBAチュートリアル」を検索すると、満足のいくアプリケーションよりも言語に集中したものが生まれます。
- Outlookオブジェクトモデルを知る必要はありません。このチュートリアルでは、小さな部分を紹介します。
2.2店舗
Outlookは、電子メール、カレンダーアイテム、メモ、タスクなどをストアとして知られるファイルに格納します。フォルダペインを見ると、次のように表示されます。
Aaaaaaaaaa
Inbox
Drafts
Deleted Items
: :
Bbbbbbbbbb
Inbox
Drafts
Deleted Items
: :
Cccccccccc
: :
「Aaaaaaaaaa」「Bbbbbbbbbb」「Cccccccccc」は、ストアのユーザー名または表示名です。私はいつも何年にもわたって変わったこれらの名前に対してOutlookのデフォルトを受け入れてきました。デフォルトが私の名前だったら今それが私のメールアドレスです。これらのストアのファイル名は同じでも構いませんが、PSTやOSTなどの拡張子を使用しても、完全に異なるものであってもかまいません。 VBAマクロは、ストアにアクセスするためにユーザー名を必要とし、ファイル名や拡張子には関係しません。
あなたは好きなだけ多くの店を持つことができます。私はOutlookをインストールしたとき私のために作成された "Outlookデータファイル"を持っています。電子メールアドレスのアカウントを追加すると、Outlookは「[email protected]」や「[email protected]」などの電子メールアドレス用の新しいストアを作成しました。私のメインストアのサイズを縮小するために、私は "Archive 2015"のような名前の店で古いメールを保存します。
ビジネスユーザーの場合は、共有ストアまたは同僚のストアにアクセスできます。
以下のマクロは、アクセス可能な店舗をリストする3つの異なる方法を示しています。以下のコードを保持し、 F4を使用してモジュールのプロパティにアクセスするための新しいモジュールを作成し、「ModIntro」などの名前を付けることをお勧めします。このシリーズの第1回を完了した場合、あなたはすでにそのようなモジュールを持っています。
これらのマクロをモジュールにコピーし、それぞれが同じ出力を出すことをテストします。
Sub ListStores1()
Dim InxStoreCrnt As Integer
Dim NS As NameSpace
Dim StoresColl As Folders
Set NS = CreateObject("Outlook.Application").GetNamespace("MAPI")
Set StoresColl = NS.Folders
For InxStoreCrnt = 1 To StoresColl.Count
Debug.Print StoresColl(InxStoreCrnt).Name
Next
End Sub
Sub ListStores2()
Dim StoresColl As Stores
Dim StoreCrnt As Store
Set StoresColl = Session.Stores
For Each StoreCrnt In StoresColl
Debug.Print StoreCrnt.DisplayName
Next
End Sub
Sub ListStores3()
Dim InxStoreCrnt As Long
With Application.Session
For InxStoreCrnt = 1 To .Folders.Count
Debug.Print .Folders(InxStoreCrnt).Name
Next
End With
End Sub
VBAには、同じ効果を達成するいくつかの方法があることがよくあります。私は店にアクセスする3つの方法を示しました。自分の好きなものを選んでおく必要はありませんが、コードを勉強する必要があるかもしれない他の人には異なる好みがあるので、いくつかの方法があることに気づく必要があります。
マクロListStores1()
とListStores2()
の変数StoresColl
は両方ともコレクションですが、 Store
とFolder
異なるタイプのオブジェクトを保持しています。 Store
オブジェクトは、ディスク上のファイルのみを参照できます。 Folder
はディスク上のファイルを参照できますが、「受信トレイ」や「送信済みアイテム」などのストア内のFolder
を参照することもできます。 Stores
、 Folders
、 Store
、およびFolder
は、すべてOutlookオブジェクトモデルの一部です。このチュートリアルではモデルを紹介しますが、正式な定義ではありません。正式な定義が必要な場合は、 "outlook vba object model"をお気に入りの検索エンジンに入力します。モデルのVBAバージョンを確認してください。
2.3トップレベルのフォルダ
上記の私のフォルダペインの例では、「受信トレイ」、「下書き」、および「削除済みアイテム」という3つの標準フォルダしか表示されません。他の標準的なフォルダがあり、自分の好きなだけ多くのフォルダを作成することができます。 Inboxの下にフォルダを作成する人もいますが、Inboxと同じレベルで新しいフォルダを作成することを好みます。あなたのフォルダには、任意の深さまで独自のサブフォルダを持つことができるサブフォルダを持つことができます。
次のマクロはフォームのリストを生成します:
A
A1
A2
A3
B
B1
B2
C
C1
C2
C3
C4
ここで、A、B、Cはストア、A1、B1、C1などはA、B、Cのフォルダです。A1、B1、C1などにサブフォルダがある場合、このマクロではリストされません。より深くネストしたフォルダにアクセスする方法については、このチュートリアルの次の部分で説明します。
Sub ListStoresAndTopLevelFolders()
Dim FldrCrnt As Folder
Dim InxFldrCrnt As Long
Dim InxStoreCrnt As Long
Dim StoreCrnt As Folder
With Application.Session
For InxStoreCrnt = 1 To .Folders.Count
Set StoreCrnt = .Folders(InxStoreCrnt)
With StoreCrnt
Debug.Print .Name
For InxFldrCrnt = .Folders.Count To 1 Step -1
Set FldrCrnt = .Folders(InxFldrCrnt)
With FldrCrnt
Debug.Print " " & .Name
End With
Next
End With
Next
End With
End Sub
2.4このチュートリアルで覚えておくべきこと
- ストアは、Outlookが電子メール、予定表アイテム、メモ、タスクなどを格納するファイルです。
- ストアには、「受信トレイ」や「送信アイテム」などのOutlookの標準フォルダが含まれている場合があります。
- ストアにはユーザーが作成したフォルダーも含まれます。
- Outlook標準フォルダとユーザー作成フォルダの両方に、ユーザーが作成したサブフォルダ、サブサブフォルダなどが格納されている場合があります。
- 店舗を一覧表示する方法。
- ストアとそれらのストア内のトップレベルのフォルダーをリストする方法。
告白:私はどちらか "Hows"を覚えていません。私は私のために覚えているサブルーチンと関数を持っています。