OUTLOOK VBA オブジェクトまとめ

  • 13
    Like
  • 0
    Comment

OUTLOOK VBA の解説がなさすぎる

本もあまりないし、肝心のMicrosoftの解説もバラバラだ。一度まとめておくしかない。
通常本屋に行くとEXCELのマクロで事務効率化、などという本が売ってあるが、Outlook 2010 VBA の基礎知識では、結構絶望することしか書いていない。

  • VBA プログラミングは強力なソリューションですが、常に最適なアプローチであるとは限りません。目的によっては、別の手段を選択するほうが適切な場合もあります。
  • まず、もっと簡単な方法がないかを確認します。 <ありえない...
  • プログラミングを始める前に、まず、Outlook 2010 の機能を十分確認してください。
  • VBA プロジェクトを開始する前に、VBA の作業に必要な時間を確保してください。
  • Outlook の Visual Basic for Applications コードは、個人用のマクロ開発環境として開発されたものであり、展開や配布を行うことを前提としていません。なのでExportする方法しかない。Excelなどのようにマクロ付きのファイルを配布することができない。2002のころは不具合まであった。(補足参照)

マクロソフト自体がOUTLOOOKのVBAにネガティブすぎるのでは。

事前準備

1.[開発] タブを表示する
2.クィックアクセスツールバーに「マクロの実行」を表示する
  • EXCELのALT+F8のように一覧が表示される。
  • アイテムを選択して起動するマクロはVBEを開くことなくこれで起動できる。
  • リボンのあたりを右クリックしてリボンのユーザー設定>クィックアクセスツールバー すべてのコマンドから選択する。
3.マクロのセキュリティの設定を変更する
4.英語で2013までだが、オフラインのVBAのヘルプファイルを入手する日本語のヘルプサイトを参照する。2010と2007はオフラインに移行している。ただし現在のところ、日本語のヘルプはところどころリンク切れしており、英語のヘルプがやっぱり必要な状態となっている。

オブジェクト モデル (Outlook VBA リファレンス)2016用最新
Office 2013 Technical Library in Compiled Help
Office 2013 VBA Documentation
ヘルプファイル版のOffice 2013開発者用リファレンスが公開されました。- Ka-net
Office クライアントの開発 - Office 2013 Laterのオンラインヘルプのトップはこちらから
Office 2010: Developer References
(Outlook2010だが共通)Officeのヘルプを単独で開く。- ka-net
※Office 2007 と Office 2010 の開発者向けヘルプはオンラインで利用できなくなりました
オフラインの Office 開発者用ヘルプへの接続(2014/4/4更新)

Office 2010 または Office 2007 のコンテキストに依存する (F1) 開発者用ヘルプの場合、オフライン時のヘルプを利用するには以下の手順に従ってヘルプ ウィンドウの既定のヘルプの検索設定を変更してください。

OUTLOOKのオブジェクトはOUTLOOK以外でも操作できる

  • OUTLOOKが他のオフィスのVBA、VBSで操作できることを知っておくといろいろ便利
    • EXCELでメールアドレスを指定して、メールを作成して送信する
    • 通常、OUTLOOK本体のINSPECTORでメール、予定表、アドレス帳で作成するアイテムを、VBAで作成できる
    • 仕訳ルールを確かめることができる
    • メールのリストのEXCEL、ACCESSのテーブルを作成する(前回参照)
    • メールを印刷する際、ある程度内容を選択した印刷をすることができる(以後紹介予定)
  • 特にVBSCRIPTでメール、予定表、アドレスが作成できるのは便利。Windows Powershellも可能
  • VBScriptはテキストメールで送信して、受信者がVBSCRIPTとして保存すると可能になる。
  • Outlook本体ではOutlook オブジェクト ライブラリへの参照が既定で設定
  • またOUTLOOK本体ではOUTLOOK VIEW Controlも併せて参照設定することで細かい検索、VIEWの設定ができるので必須
  • OUTLOOK以外のVBAでも、下記のパターンを使うほか、Outlook Object Library を参照設定することでもOutlookを操作できる。(下記の例では、参照設定後、下記の 'ASのところにあるアポストロフを外す)
  • ExcelでOutlookのアドレス帳を会社名で検索して、メールアドレスを抜き出すこともできる
  • Vbscript 三流君 Outlook Appointment 予定表を操作する より代表的なパターン
'以下がVBSの代表的なパターン
'OUTLOOK以外のVBAでも使用できる
'OUTLOOK以外のVBAではOutlook Object Library を参照設定するとASの前のアポストロフを外すことができる

    Dim oApp        'As NEW Outlook.Application OutlookのApplication
    Dim myNameSpace 'As Outlook.NameSpace
    Dim myFolder 
    Set oApp = CreateObject("Outlook.Application") 'VBAで参照設定をした場合は不要
    Set myNameSpace = oApp.GetNamespace("MAPI")
    Set myFolder = myNameSpace.GetDefaultFolder(9) 
  • OUTLOOKのVBA(VBS)でも重要なことはAPPLICATION - Namespace から始まって、自分が操作したいアイテムのフォルダ、オブジェクトのレベルにたどり着くこと。ここからオブジェクトの作成変更削除、プロパティの操作につながる。このためNameSpaceがすべての入り口になる。

本論

Namespaceがすべての入り口

Application(OUTLOOK) - NameSpace オブジェクト

  • NameSpace オブジェクトを、すべての既存の Outlook フォルダへのゲートウェイと考えることができます。
  • このためすべてのコードの記述の最初は以下のようになる

OUTLOOK以外(Outlookに参照設定済)

Dim olApp As Outlook.Application
Dim gnspNameSpace as Outlook.Namespace:Set gnspNameSpace = olApp.GetNameSpace("MAPI")

OUTLOOK

Dim gnspNameSpace as Outlook.Namespace: Set gnspNameSpace = Application.GetNamespace("MAPI")
  • VBA を使用する場合は、オートメーションを使用してほかのアプリケーションから Outlook で作業する場合、そのアプリケーションの [参照設定] ダイアログ ボックスを使用し、まず Microsoft Outlook XX.0 Object Library への参照を設定する必要がある。
  • Microsoft Outlook XX.0 Object Library への参照が設定されている場合、次のように New キーワードを使用して、Outlook の Application オブジェクトの新しいインスタンスを作成する。
Sub OutlookInstance()
Dim olApp As Outlook.Application: Set olApp = New Outlook.Application
Dim NS As Outlook.Namespace: Set NS = olApp.GetNamespace("MAPI")
Dim olDfolder As Outlook.Folder
Set olDfolder = NS.GetDefaultFolder(Outlook.olFolderInbox)
End Sub
  • Microsoft Outlook XX.0 Object Library への参照を設定していない場合は、CreateObject 関数を使用する必要がある。
  • 一度に使用可能な Outlook のインスタンスは 1 つ。
  • Outlook が起動していない場合に、New キーワードまたは CreateObject 関数によって Outlook の新しい非表示インスタンスが 1 つ作成される。
  • Outlook のインスタンスが既に実行されている場合に New キーワードまたは CreateObject 関数を使用すると、実行中のインスタンスへの参照が返される。(なのでVBAを稼働させている間にOUTLOOKを手動で操作してはいけない)

Objectの指定の順番(優劣)

上記の getdefaultfalderは受信メールフォルダ、予定表などのアイテムのある場所(フォルダ)が直接アクセス可能になる。しかし、OUTLOOKのオブジェクトは順番がある。それぞれのItemに到達するには順番に指定しなければならない。

Outlook プロジェクト内のオブジェクトへのアクセス

Outlook では、多くのオブジェクトが操作対象になります。 オブジェクト モデルを効果的に使用するには、次の最上位レベルのオブジェクトについて理解する必要がある。

MAPIFolder インターフェイス (Microsoft.Office.Interop.Outlook)

このインターフェイスは推奨されていません。このインターフェイスは使用しないでください。 代わりに、インターフェイス Folder を使用して、COM オブジェクト Folder のすべてのメソッド、プロパティ、およびイベント メンバにアクセスします。COM オブジェクトのメソッドおよびプロパティ メンバについては、このトピックを参照してください。COM オブジェクトのイベント メンバについては、「MAPIFolderEvents_12_Event」を参照すること。
https://msdn.microsoft.com/ja-jp/library/microsoft.office.interop.outlook.mapifolder.aspx

T:Microsoft.Office.Interop.Outlook.Application

T:Microsoft.Office.Interop.Outlook.Explorer

T:Microsoft.Office.Interop.Outlook.Inspector

ここから下が代表的なアイテム

T:Microsoft.Office.Interop.Outlook.MailItem メール

T:Microsoft.Office.Interop.Outlook.AppointmentItem 予定表

T:Microsoft.Office.Interop.Outlook.TaskItem タスク(仕事)

T:Microsoft.Office.Interop.Outlook.ContactItem 住所録(アドレス帳)

  • Outlook において "アイテム" とは、ほかのアプリケーションにおけるファイルのように、情報を保持するオブジェクトです。アイテムにはメール メッセージ、予定、連絡先、仕事、履歴項目、およびメモが含まれます

Explorer および Inspector オブジェクト

メール メッセージまたは連絡先など、Outlook の特定のアイテムを含むウィンドウは Outlook の *Inspector *オブジェクトです。
メールをダブルクリックで開いた画面がINSPECTOR
https://msdn.microsoft.com/ja-jp/library/cc344584.aspx

オブジェクト、UIとの関係

Applicaiotion - Namespace Mapi
Explorers - Explorer - Panes - Pane
- Navigation Pane
Navigation Groups
Navigation Group
Navigation Modules
Navigation Module
Navigation Folders
Navigation Folder --Views - View -ViewFields ViewField
Applicaiotion - Namespace Mapi - Inspector
そしてInspector,ExploreからCommandBarsへ行く
Storeは後述

Explorers オブジェクト (Outlook)

  • エクスプローラー のセットが含まれています すべてのエクスプ ローラーを表すオブジェクト。
  • エクスプローラーをコレクションに含まれる表示する必要はありません。(STORE オブジェクトとの相違点)
  • これを使わずに、エクスプローラーオブジェクトを使用します。エクスプローラーオブジェクトをアプリケーションから取得するプロパティオブジェクトです。

https://msdn.microsoft.com/ja-jp/library/office/ff867227.aspx

Explorer オブジェクト (Outlook)

  • フォルダーの内容が表示されるウィンドウを表します。
  • 特定のエクスプローラーを表す オブジェクトを取得するには、Explorers オブジェクト の Item メソッドを使用します。
  • 現在アクティブなエクスプローラーを 表すオブジェクトを取得するには、ActiveExplorer メソッドを使用します。
  • フォルダーに関連する Explorer オブジェクトを取得するには、 GetExplorer メソッドを使用します。
  • 関連するファイル フォルダーを表示するには、 Folder オブジェクト の Display メソッドを使用します。

https://msdn.microsoft.com/ja-jp/library/office/ff860356.aspx

Inspectors オブジェクト (Outlook)

  • すべてのインスペクターを表すInspectorオブジェクトのセットが含まれています。
  • インスペクターは非表示の場合もこのコレクションに含まれます。
  • 検査項目 のプロパティを使用して、アプリケーションオブジェクトからインスペクターオブジェクトを取得します。

https://msdn.microsoft.com/ja-jp/library/office/ff868697.aspx

Inspector オブジェクト (Outlook)

Stores オブジェクト

  • 現在のプロファイルで利用できるすべてのストアを表す Store オブジェクトの集合です。
  • ストアのオブジェクトを使用するにはすべてのフォルダーを列挙し、現在のセッションですべてのストアのフォルダーを検索します。 (Explorerとの相違)
    Stores オブジェクト
    The Folder object has replaced the MAPIFolder object that existed in Microsoft Office Outlook 2003 and earlier versions of Outlook. New solutions should only use Folder.
    フォルダーオブジェクトは、Microsoft Office Outlook 2003年および Outlook の以前のバージョンに存在していたMAPIFolderオブジェクトに置き換えられました。新しいソリューションには、フォルダーのみを使用する必要があります。
    ※この辺がMAPIフォルダーオブジェクトがない、推奨が使用されない原因かもしれない。

  • ストアのフォルダーツリーの1つのレベルですべてのフォルダーオブジェクトを表すフォルダーのコレクションです。Foldersコレクションでは、検索フォルダーのコレクションを表すこともできます。

  • ストア オブジェクト、ローカル コンピューターまたは電子メール メッセージやその他のアイテムが格納されているネットワーク ドライブ上のファイルを表します。

  • Stores コレクション。現在の Outlook プロファイルに含まれているすべてのストアを表します。1 つのプロファイルには 1 つ以上の電子メール アカウントを定義し、それぞれの電子メール アカウントは特定の種類のサーバーに関連付けられます。

    • サーバーの種類によって、ストアの種類と、電子メールやその他のアイテムの配信方法および格納方法が決まります。
    • たとえば、Exchange Server では、ローカル コンピューターまたはマップされたネットワーク ドライブ上の .pst ファイルまたは .ost ファイルに、電子メールやその他のアイテムが格納されます。
    • Hotmail などの HTTP サーバーでは、ローカル コンピューターの .pst ファイルにアイテムが格納されます。
    • Store オブジェクトおよび Stores オブジェクトは、次の機能をサポートしています
    • Store.GetRootFolder に続いて Folder.Folders を使用するストア内のフォルダーの列挙
    • Store.GetSearchFolders によるストア内の検索フォルダーの列挙。この場合、Stor.Isopen - Store.GetSearchFoldersを使用すること。
    • Better performance with enumerating folders. Because getting the root folder or search folders in a store requires the store to be open and opening a store imposes an overhead on performance, you can check the Store.IsOpen property before you decide to pursue the operation.
    • フォルダーの列挙におけるパフォーマンスの向上。ストア内のルート フォルダーまたは検索フォルダーを取得するためには、そのストアが開かれている必要がありますが、ストアを開く操作によってパフォーマンス上のオーバーヘッドが発生します。そこで、操作を続行する前に Store.IsOpen プロパティをチェックすることができます。
    • Store.FilePath プロパティを使用した、Exchange Server 用のローカルのストア (.pst または .ost)、または POP3 電子メール サーバー、IMAP 電子メール サーバー、HTTP 電子メール サーバー用のストア (.pst) の配置。
    • Store.ExchangeStoreType プロパティによる Exchange ストアの種類の検出および異なる種類の Exchange ストアの識別。
    • Store.IsCachedExchange プロパティおよび Store.IsDataFileStore による Exchange Server に関する追加情報の取得。
    • Store.PropertyAccessor プロパティによる PropertyAccessor オブジェクトの取得により、ストアのプロパティが明示的に組み込まれているプロパティとして Outlook オブジェクトモデルで公開されていなくても、そのプロパティにアクセスすることができます。
    • Store.GetRulsで現在のセッションに定義されている Rule オブジェクトを含む Rules コレクション オブジェクトを返します。つまり仕訳ルールはStoreからアクセスできる。

Outlook のアイテムを保存する
Store.GetRules メソッド (Outlook)(機械翻訳)
No.775 仕訳ルールの一覧を取得する(Outlook.Store.GetRulesメソッド) - VBAサンプルコード

Store オブジェクト

現在のプロファイルのアカウントの電子メール メッセージやその他のアイテムが保存される、ローカル コンピューターまたはネットワーク ドライブ上のファイルを表します。
下記のサンプルで
oRoot というのがあるが、これが実はMAPIFolder
そしてこの時点ではFolder 単数だが
EnumerateFolders oRoot
でユーザー定義関数に入り、
Set folders = oFolder.folders
というのが出てくる。
この行に注目してほしい。せっかくFolderだったものが、またFoldersになる。
つまりoStore.getrootFolderで取得するフォルダーとは、複数のFolderの入った一つのFolderで、上記の「ストアのフォルダーツリーの1つのレベルですべてのフォルダーオブジェクトを表すフォルダーのコレクションです。」とはこのことを表している。

EnumerateFoldersInStores.BAS
Sub EnumerateFoldersInStores() 
 Dim colStores As Outlook.Stores 
 Dim oStore As Outlook.Store 
 Dim oRoot As Outlook.Folder 
 On Error Resume Next 
 Set colStores = Application.Session.Stores 
 For Each oStore In colStores 
  Set oRoot = oStore.GetRootFolder '<<
  Debug.Print ('oRoot.FolderPath') 
  EnumerateFolders oRoot 
Next 
End Sub 

Private Sub EnumerateFolders(ByVal oFolder As Outlook.Folder) 
  Dim folders As Outlook.folders 
  Dim Folder As Outlook.Folder 
  Dim foldercount As Integer 
  On Error Resume Next 
  Set folders = oFolder.folders '<<
  foldercount = folders.Count 
 'Check if there are any folders below oFolder 
 If foldercount Then 
 For Each Folder In folders 
 Debug.Print (Folder.FolderPath) 
 EnumerateFolders Folder 
 Next 
 End If 
End Sub

Session と NameSapce Mapi

OUTLOOKのVBAでは
Dim oFolder
Dim NS as Namespace: Set Namespace=Application.Getnamespace("MAPI")として
Set oFolder = NS.GetDefaultFolder(olFolderInbox)
として受信フォルダを指定できる。
これは
Set oFolder = Application.Getnamespace("MAPI").GetDefaultfolder(olFolderInbox)
と書くことができる。
これをさらに
Set oFolder = Application.Session.GetDefaultFolder(olFolderInbox)
と書くことができる。
以上から
Application.Getnamespace("MAPI") は Application.Session に置き換えることができる。

代表的なオブジェクトの次はユーザーインタフェースについて

ナビゲーション ウィンドウとは

Outlook ウィンドウの左側に表示され、[メール]、[予定表]、[連絡先]、[タスク]、[メモ] など Outlook の領域間を切り替えることができる。また、ビュー内で作業しているときは、そのビュー内のフォルダーがナビゲーション ウィンドウに表示される。
https://support.office.com/ja-jp/article/ナビゲーション-ウィンドウとは-24fcad76-7604-4ab0-80ed-18d65fcc9dc3
https://msdn.microsoft.com/ja-jp/library/cc344368.aspx

まとめ Outlookは4系統の指定の流れがある

1. Explorer FolderからさらにViewとItemがある

Applicaiotion  - Namespace Mapi
- Namespace Mapi - Explorers - Explorer - Panes - Navigation Pane - Navigation Groups - Navigation Group
- Navigation Modules - Navigation Module - Navigation Folders -
Navigation Folder -Views - View -ViewFields - ViewField
Navigation Folder - Items - Item

2.Inspector これはメールなどを開いた画面

Applicaiotion - Namespace Mapi - Inspectors - Inspector

3.Stores

Application - Namespace Mapi - Stores - Store - Store.oRootFolder - Folders - Folder - Items - Item
                                                                              Folder - Views - View

保存先などのデータフォルダー、複数アカウント、検索フォルダにすべてアクセスできる。
さらに仕訳ルール(メールの振り分けルール)にもアクセスできる(ただし低速)
あまり知られていないが、実は一番強力なのはこれかもしれない。
StoreにPropertyAccssesorを使うとプロパティを見ることができる。
これは直接メール等のアイテムにアクセスするのには便利だが、視覚的にはExploreよりわかりづらい

4.Account

Applicaiotion - Namespace Mapi - Accounts - Account
Applicaiotion - Namespace Mapi - Outlook Data Folders(保存先) - Folder - Views -ViewApplicaiotion - Namespace Mapi - Outlook Data Folders(保存先) - Folder - Itemes - Item
Application.Session.folders(olAccount.DisplayName).folders(olFolderInbox).Items
とこのような指定方法になる。しかしこれでは保存先が指定できない。この方法は複数のメールアドレスを管理しているときはあまり必要がない。

サンプルコード

以下のコードで上記の4つの系統にアクセスしている。
Microsoft Outlook View Control を参照設定してください。

testgetting.BAS
Sub testgetting()
'[《OutLook VBA》特定フォルダ内のメールを保存するマクロ - 不連続日記](http://nostressman1q86.hatenablog.com/entry/2013/05/02/225742)
'[Outlook VBA change Send using account when item load - StackOverFlow - ](http://stackoverflow.com/questions/18342667/outlook-vba-change-send-using-account-when-item-load)
'[Outlook Object Model で既定のフォルダ以外のフォルダを取得する方法 - OUTLOOK研究所 - ](https://outlooklab.wordpress.com/2008/03/29/outlook-object-model-%E3%81%A7%E6%97%A2%E5%AE%9A%E3%81%AE%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E4%BB%A5%E5%A4%96%E3%81%AE%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99/)
'[step1.5 受信トレイ以外のフォルダを指定 ](http://outlookvba.blogspot.jp/2011/11/step15.html)
Dim olApp As Outlook.Application
Dim NS As Outlook.NameSpace: Set NS = Application.GetNamespace("MAPI")
Dim olPanes As Outlook.Panes
Dim olNavP As Outlook.NavigationPane
Dim olNavMs As NavigationModules, olNavM As NavigationModule
Dim olNagGs As NavigationGroups, olNavG As NavigationGroup
Dim olNaVFs As NavigationFolders, olNavF As NavigationFolder
'Dim olMods As Modules, olMod As Module
Dim olViews As Outlook.Views, olView As Outlook.View
'Dim olViewFs As Outlook.ViewFields
Dim olViewF As Outlook.ViewField
Dim olTView As Outlook.TableView
Dim olMapiFolder '使用が推奨されない
Dim Aex As Explorer, Aexs As Explorers, Ains As Inspectors, Ain As Inspector
Dim olCurrentView, olCurrentModule, olCurrentFolder
Dim GetCurrentItem
Dim olStores As Outlook.Stores
Dim olStore As Outlook.Store
Dim oRoot As Folder, oFolders As Outlook.folders, oFolder As Outlook.Folder, oSCFolders As Outlook.folders, oSCFolder As Outlook.Folder, olSPFolder
Dim olRules As Outlook.Rules, olRule As Outlook.Rule
'----Seach Account
Dim olAccount As Outlook.Account, olAccounts As Accounts: Set olAccounts = Application.Session.Accounts
Dim olAccountCurrentUser As Recipient, strEntryId As String, olRcp As Recipient
For Each olAccount In olAccounts
With olAccount
Debug.Print .AccountType, .CurrentUser.Address, .DisplayName
Debug.Print Application.Session.folders(.DisplayName).folders(olFolderInbox).Items.Count
End With
Next
Set olAccountCurrentUser = Application.Session.CurrentUser
strEntryId = olAccountCurrentUser.EntryID
'----
'----Store
Set olStores = Application.Session.Stores
For Each olStore In olStores
Set oRoot = olStore.GetRootFolder
Debug.Print (oRoot.FolderPath)
Set oFolders = oRoot.folders
 For Each oFolder In oFolders
 Debug.Print (oFolder.FolderPath)
 Debug.Print oFolder.Items.Count
If olStore.IsOpen = True Then
Set oSCFolders = olStore.GetSearchFolders
  If oSCFolders.Count > 0 Then
    For Each oSCFolder In oSCFolders
    Debug.Print oSCFolder.Name
    Next
  End If
Set olSPFolder = olStore.GetSpecialFolder(olSpecialFolderReminders)
On Error Resume Next
Set olRules = olStore.GetRules
On Error GoTo 0
End If

Next
Next

On Error Resume Next
Select Case TypeName(Application.ActiveWindow)
Case "Explorer"
Set Aex = ActiveExplorer
Set olCurrentView = Aex.CurrentView
Set olCurrentFolder = Aex.CurrentFolder
Set olPanes = Aex.Panes
Set olNavP = Aex.NavigationPane
Set olNavMs = olNavP.Modules
Set olNavM = olNavMs.Item(1)
Set olNavG = olNavM.NavigationGroups.Item(1)
Set olNaVFs = olNavG.NavigationFolders
Set olNavF = olNaVFs.Item(1)
If Application.ActiveExplorer.CurrentView.ViewType = _
olTableView Then Set olTView = Aex.CurrentView
For Each olViewF In olTView.ViewFields
With olViewF
Debug.Print .ColumnFormat.Label & _
" (" & .ViewXMLSchemaName & ")" & vbCrLf
End With
Next
Case "Inspector"
Set Ains = Application.Inspectors
Set Ain = Application.ActiveInspector
Set GetCurrentItem = ActiveInspector.CurrentItem
Debug.Print "Type:" & Ain.Session.Type, "Offline:" & Ain.Session.Offline,
End Select
On Error GoTo 0
End Sub

参考リンク

《OutLook VBA》特定フォルダ内のメールを保存するマクロ - 不連続日記
Outlook VBA change Send using account when item load - StackOverFlow -
Outlook Object Model で既定のフォルダ以外のフォルダを取得する方法 - OUTLOOK研究所 -

OUTLOOK 2007

Outlook 2007 を計画する

\Outlook 2007への移行

Outlook 2007 へのアップグレードを計画する

Office Outlook 2007 での FAX サポートを選択する

Office Outlook 2007 では、統合 FAX サポートは提供されていません。ただし、サードパーティの MAPI FAX プロバイダまたは Microsoft Windows FAX サポートを使用で来ます。
Outlook に統合された以前の FAX プログラムである WinFax は、Office Outlook 2007 によってアンインストールされます。ビューアが現在ユーザーのコンピュータに存在する場合は、アップグレード プロセスの途中アンインストールされます。

Office Outlook 2007 でフォームをサポートする

電子フォーム デザイナーを使用するカスタム ソリューションがある場合は、電子フォーム デザイナーは Office Outlook 2007 ではサポートされていないことに注意してください。

ファックスと電子フォームデザイナはOL2007で死亡した。
2007 Office Resource Kit

2007 Microsoft Office システムの展開に必要な主要管理ツールは製品に同梱されており、前のバージョンの Office のようにダウンロードとして提供されることはなくなりました。

Outlook 2007 へのアップグレードを計画する
Outlook 2007 での移行に関する考慮事項
いつ Outlook 2007 をインストールするかを決定する
へんなタイトルだが、下記のようにOUTLOOK2007がWord2007の機能を流用していることを考えると、オフィス2007をインストールしてからOL2007をインストールすべきである
Outlook 2007 のセキュリティと保護を計画する
Word 2007 なしで Outlook 2007 を展開する影響
このことからOUTLOOKがWordの機能を流用していると考えられる。

Outlook 2010

Office 2010 リソース キットのダウンロード可能なコンテンツ
2007 以前はなくなっているので入手はお早めに
Outlook 2010 VBA の基礎知識
Writing VBA code for Microsoft Outlook

OutLookまとめの続き

OUTLOOK VBA 検索に関するリンクのまとめ
検索に関しては無駄に知識が多いのでMicrosoftの関連先を一覧にしてみました。

OUTLOOK VBA オブジェクトまとめ Store オブジェクト補足 StoreオブジェクトはVBSで使用できる
OUTLOOK VBA オブジェクトまとめ Store オブジェクト補足2 未完のSearchFolder
OUTLOOK VBA オブジェクトまとめ Store オブジェクト補足3 SearchFolderを別角度から

(付録)新機能

Outlookのオブジェクトの構成は主要なオブジェクトについては、メソッド、プロパティとも2007以降はあまり変更がない。したがって、上記の記述は2007以降2016まで有効である。

Outlook 2010 以前はオフラインヘルプを参照することとされている。が技術文書等は残っている
Outlook 2010
Outlook ヘルプ - Microsoft サポート
初心者向けだが、意外な操作方法もある。
Outlook 2010 VBA の基礎知識
ビデオ: Outlook 2013 の新機能
Outlook 2013 での変更点 - technet
Outlook 2013 SP1 での変更点 - technet
Office 2016 の VBA 向け新機能 -OutLook

Store.CreateUnifiedGroup

https://msdn.microsoft.com/ja-jp/library/office/ff867275.aspx
にも説明がない。ではgroupオブジェクトやUnitedGroupオブジェクトがあるかといえばそうでもない。
PaneにPreviewPaneが加わった

名前 説明
ExchangeDistributionList.GetUnifiedGroup メソッド (Outlook) IsUnifiedGroup の呼び出しによって、オブジェクトが統合グループであるかどうかを判別します。
ExchangeDistributionList.GetUnifiedGroupFromStore メソッド (Outlook) IsUnifiedGroup の呼び出しによって、オブジェクトが統合グループであるかどうかを判別し、GetUnifiedGroup メソッドと GetUnifiedGroupFromStore メソッドを使用して、このグループに関連付けられている Outlook.Folder オブジェクトを返します。
ExchangeDistributionList.IsUnifiedGroup メソッド (Outlook) オブジェクトが統合グループであるかどうかを判別します。
ExchangeUser.GetUnifiedGroup メソッド (Outlook) IsUnifiedGroup の呼び出しによって、オブジェクトが統合グループであるかどうかを判別します。
ExchangeUser.GetUnifiedGroupFromStore メソッド (Outlook) IsUnifiedGroup の呼び出しによって、オブジェクトが統合グループであるかどうかを判別します。
ExchangeUser.IsUnifiedGroup メソッド (Outlook) オブジェクトが統合グループであるかどうかを判別します。
Explorer.DisplayMode プロパティ (Outlook) 次のいずれの表示モードであるかを示します。標準、縦表示、または縦閲覧ウィンドウ。
Explorer.DisplayModeChange イベント (Outlook) ユーザーが表示モードを変更するアクションを実行したときに発生します。使用可能なモードは、通常、縦表示、および縦閲覧ウィンドウです。
Explorer.PreviewPane プロパティ (Outlook) PreviewPane オブジェクトは、プレビュー ウィンドウのビューのみで表示することにより、"単一ウィンドウ モード" でコンテンツを表示します。
ExplorerEvents_10.DisplayModeChange メソッド (Outlook) ユーザーが表示モードを変更するアクションを実行したときに発生します。使用可能なモードは、通常、縦表示、および縦閲覧ウィンドウです。
OlDisplayMode 列挙 (Outlook) 表示モードの性質を記述します。使用可能なモードは、通常、縦表示、および縦閲覧ウィンドウです。
OlUnifiedGroupFolderType 列挙 (Outlook) 統合グループを取得するフォルダーを指定します。グループにはメールと予定表の両方のフォルダーがあるため、olGroupMailFolder または olGroupCalendarFolder のいずれかを指定できます。
OlUnifiedGroupType 列挙 (Outlook) CreateUnifiedGroup メソッドのグループの種類をパブリックまたはプライベートとして指定します。
PreviewPane メンバー (Outlook) プレビュー ウィンドウのビューのみで表示することにより、"単一ウィンドウ モード" でコンテンツを表示します。
PreviewPane オブジェクト (Outlook) PreviewPane オブジェクトのコレクションが含まれます。
PreviewPane.Application プロパティ (Outlook) PreviewPane オブジェクトの親のアプリケーション (Outlook) を表す Application オブジェクトを返します。値の取得のみ可能です。
PreviewPane.Class プロパティ (Outlook) PreviewPane オブジェクトのクラスを示す OlObjectClass 列挙の定数を返します。値の取得のみ可能です。
PreviewPane.Parent プロパティ (Outlook) PreviewPane オブジェクトの親プロパティを返します。値の取得のみ可能です。
PreviewPane.Session プロパティ (Outlook) 現在のセッションの NameSpace を返します。値の取得のみ可能です。
PreviewPane.WordEditor プロパティ (Outlook) 表示されているメッセージの Word ドキュメント オブジェクト モデルを取得します。値の取得のみ可能です。
Store.CreateUnifiedGroup メソッド (Outlook) 統合グループの作成を有効にします。
Store.DeleteUnifiedGroup メソッド (Outlook) 統合グループの削除を有効にします。

補足 OUTLOOK VBAは2002のころは不具合すらあったこととプロジェクトの移行方法

[OL2002] Outlook VBA プロジェクトの管理と配布

  • Outlook は、ほかの Microsoft Office プログラムとは異なり、Project1というVBAプロジェクトのみ使用可能で、プログラムには常にこのプロジェクトが関連付けられている。Visual Basic Editor で別のプロジェクトを追加することはできない
  • Project1 は、ハードディスクの以下のフォルダに VbaProject.OTM という名前で格納される。<ドライブ>:\Windows\Application Data\Microsoft\Outlook
  • Outlook では、OTM ファイルを直接管理する手段を提供していない。Outlook の VBA コードは、展開または配布するためのものではなく、あくまで個人的なマクロ開発環境として設計されている。
  • 新しい VBA プロジェクトを開始する場合、理論的には既存のモジュールおよびフォームをすべてエクスポートするという方法も考えられるが、これは通常現実的な手段ではない。この方法の代わりに、次の手順を実行する。(編注:この方法は現在でもプロジェクトを移動させるときは有効と考えられる。)

1.Outlook が起動している場合は、Outlook を終了。
2.前述の方法で、VbaProject.OTM ファイルを検索。
3.このファイルの名前を、分かりやすい別の名前 (VbaProject-testing1.OTM など) に変更。
4. Outlook を起動。VBE起動>新しいVbaProject.OTMが再作成。
プロジェクトを切り替えたい場合は、前述の方法に手順を 1 つ追加。
3-1.使用するファイルの名前を VbaProject.OTM に戻す。

VBA プロジェクトをコンピュータ間で移動する場合は、まずそれぞれのコンピュータで VbaProject.OTM ファイルが格納されている場所を確認した後、コンピュータ間で OTM ファイルをコピーして、正しいフォルダに配置する。Outlook を再起動すると、VbaProject.OTM ファイルが認識され、使用される。

重要 : 上記の手順は、マイクロソフトでは、この方法によるソリューションの展開をサポートしていない。この方法には既知の問題もあり、Outlook はこの機能をサポートするように設計されていない。
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
290780 OL2002: Code Does Not Work After You Distribute a VBA Project (リンク切れ)
文書番号:290779 - 最終更新日: 2003/02/16 - リビジョン: 1

補足2 OUTLOOK 2007の開発者タブの表示方法

Visual Basic Editor の使用に関するヘルプを見つける

1.[開発] タブの [Visual Basic] をクリックします。
[開発] タブが表示されません。
a.[ツール] メニューの [オプション] をクリックします。
b.[その他] タブで [詳細オプション] をクリックし、[[開発] タブをリボンに表示する] チェック ボックスをオンにします。
2.[ヘルプ] メニューの [Microsoft Visual Basic ヘルプ] をクリックします。
3.[検索語句を入力してください] ボックスに、ヘルプを必要とするメソッド、プロパティ、関数、ステートメント、オブジェクトを入力します。または、クエリを入力します。