サーチ…


前書き

ストアとそれに含まれるフォルダーの紹介の最初の部分。アクセス可能なストアの名前とアクセス可能なストアの名前とその中のトップレベルのフォルダを表示するマクロが含まれています。

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は両方ともコレクションですが、 StoreFolder異なるタイプのオブジェクトを保持しています。 Storeオブジェクトは、ディスク上のファイルのみを参照できます。 Folderはディスク上のファイルを参照できますが、「受信トレイ」や「送信済みアイテム」などのストア内のFolderを参照することもできます。 StoresFoldersStore 、および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"を覚えていません。私は私のために覚えているサブルーチンと関数を持っています。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow