ユーザー定義フィールドを活用する


ユーザー定義フィールドとは、その名の通りユーザーが自由に定義できるフィールドのことで、Outlook で扱うアイテムに任意に設定できます。(フィールドの定義はフォルダ単位で行います。)
ユーザー定義フィールドに格納できるデータはテキストや数値、日付などであり、フィールドを定義する際に格納するデータの種類を指定します。
また、ユーザー定義フィールドには Excel のセルのように数式を定義することも可能であり、他のプロパティの値などから動的に値を設定させることも可能です。

ユーザー定義フィールドの定義方法

ユーザー定義フィールドの定義は以下の手順で行います。

  1. 定義したいフィールドを設定するフォルダを開きます。
  2. [表示]-[現在のビュー] で表形式のビュー (例えば、[分類項目別] など) を選択します。
  3. ビューのヘッダを右クリックし、[フィールドの選択] をクリックします。
  4. [新規フィールド] をクリックします。
  5. フィールドの名前や種類、書式などを設定し、[OK] をクリックします。

このように作成したユーザー定義フィールドをビューのヘッダにドラッグアンドドロップすると、フィールドが一覧に追加されます。
そして、表示しているビューが直接編集可能なものであれば、アイテムのユーザー定義フィールドを一覧表示から編集することが可能です。

また、アイテムに設定したユーザー定義フィールドの値は VBA からアイテムのオブジェクトの UserProperties によりアクセスすることもできます。
例えば、"顧客ID" という名前のユーザー定義フィールドを連絡先オブジェクトに設定していた場合、Item.UserProperties("顧客ID").Value で "顧客ID" ユーザー定義フィールドに設定した値を取得したり、値を設定したりできます。

仕事や連絡先でユーザー定義フィールドを活用すれば、簡易データベースとして Outlook を使うこともできるでしょう。

ユーザー定義フィールドの活用例

メールによるダイレクト メールを送信可能な連絡先をあらかじめ設定しておき、マクロを使ってその連絡先にメールを送信するというような例を考えて見ました。
この場合必要なのは、ダイレクト メールを送信可能かどうかを保持するユーザー定義フィールドと、そのフィールドをチェックして BCC でメールを送信するためのマクロです。

まず、[連絡先] フォルダを開き、前述の手順により以下のようなユーザー定義フィールドを追加します。

  名前: DM
  種類: はい/いいえ
  書式: アイコン

次に、追加したフィールドをビューのヘッダにドラッグアンドドロップします。すると、[DM] という列ができるので、ダイレクト メールを送信したい連絡先の [DM] フィールドをチェックし、チェックボックスをオンにします。

そして、このフィールドをチェックし、連絡先を BCC に設定するマクロは以下のようになります。


Public Sub SendDM()
    Dim colContacts 'As Items
    Dim objContact 'As ContactItem
    Dim objMail 'As MailItem
' 新規のメールアイテムを作成
    Set objMail = Application.Session.GetDefaultFolder(olFolderOutbox).Items.Add()
' 連絡先のアイテムの一覧を取得
'
    Set colContacts = Application.Session.GetDefaultFolder(olFolderContacts).Items
' [DM] のチェックボックスがオンになっている連絡先を検索
    Set objContact = colContacts.Find("[DM]='はい'")
' [DM] がオンのアイテムがなくなるまでループ
    While Not objContact Is Nothing
' メールの BCC に連絡先のメールアドレスを追加
        objMail.BCC = objMail.BCC & objContact.Email1Address & ";"
' 次の連絡先アイテムを検索
        Set objContact = colContacts.FindNext
    Wend
' BCC が設定されたメールを表示
    objMail.Display
End Sub


このようにマクロによって送信先を BCC で設定するようにしておけば、BCC と間違って CC に多数の連絡先を設定してしまい、個人情報の漏洩として問題になる可能性は低くなるでしょう。

マクロの登録方法やメニューへの追加について

広告

ユーザー定義フィールドを活用する」への4件のフィードバック

  1. はじめまして。

    ここで説明されている連絡先に追加した「顧客ID」という情報は、Exchangeに保存されるのでしょうか?(OWAからアクセスしても表示可能?表示できるOWAの画面を作る必要があるとは思いますが…)

    Exchangeに格納されるのであれば、たとえば予定に同じような「顧客ID]を入れた場合、それを表示できるフォームを作成して全員で共有すれば、そのフォームで予約を作成するときに「顧客ID」をセットし、予約参照時には「顧客ID」を確認できるようになるのでしょうか?
    もちろん、予定表に充分なアクセス権を与え、他人がOutlookより参照した場合にも、専用フォームを使えば「顧客ID」を確認できるようになるのか?といったことも知りたいです。

    もしご存知のようでしたら教えていただけないでしょうか?
    よろしくお願いします。

    • ユーザー定義フィールドの情報は Exchange サーバーにも保存されます。
      また、ユーザー定義フィールドを参照するフォームを作成し、それを組織フォームライブラリなどに発効すれば、ほかのユーザーからもこのフィールドを参照することはできるでしょう。

      ただし、OWA ではカスタマイズができないので、OWA からこの情報を確認することはできないと思います。

  2. 返信ありがとうございます。
    OWAは、カスタマイズできないんですね。

    予約作成用のカスタムフォームを作成し、デフォルト以外に追加した情報(たとえば「顧客ID」など)をカスタムプロパティに保存して、他の人からも参照できるようにしたいと思っていました。
    いろいろ調べて、実現できそうかな?とは思っていたのですが、知りたいことが明確に記述されているところが少なく、少し行き詰っていましたので、大変ありがたかったです。

    ちなみに、アドインとしてカスタムフォームを作成するということは、Outlook用のクライアントを作るというイメージでいるのですが、このカスタムフォームからEWSを利用してExchangeにアクセスしたり、SQL Serverを参照/更新したりもできますか?(アドインにしない場合には、ここまでのロジックは埋め込めないのでは?といった印象を持っています)

    ご存知でしたら教えていただけないでしょうか?
    以上、よろしくお願いします。

    • カスタムフォームの中にVisual Basic Scriptでコードを埋め込むことができ、スクリプトで xmlHttp や ADO を使えば Exchange の EWS や SQL Server を参照・更新することも可能です。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中