色分類項目のマスターをエクスポート/インポートするスクリプト


Outlook 2007 以降では色分類項目という機能が追加され、分類項目ごとに色分けができるようになりました。
しかし、この色の情報は個々のアイテムに保存されるのではなく、メールボックスの隠しアイテムとして保存されるものであるため、ほかのユーザーに送信すると色が変わってしまったり、なくなってしまったりします。

そこで、ほかのユーザーと色情報を共有したり、この情報をバックアップしたりするためのスクリプトを作成しました。

まず、色分類項目をエクスポートするスクリプトは以下のようになります。EXPORT_FILE を実際にエクスポートするファイルのフルパスに置き換えてください。

' ここをトリプルクリックでスクリプト全体を選択できます。
Const EXPORT_FILE = "C:\temp\categories.txt"
Dim olkApp 'As Outlook.Application
Dim objFSO 'As FileSystemObject
Dim stmFile 'As TextStream
Dim objCategory 'As Outlook.Category
'
Set olkApp = CreateObject("Outlook.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set stmFile = objFSO.CreateTextFile(EXPORT_FILE, True, False)
For Each objCategory In olkApp.Session.Categories
    stmFile.WriteLine objCategory.Color & ";" & objCategory.ShortcutKey & ";" & objCategory.Name
Next
stmFile.Close

次に、上記のスクリプトでエクスポートした色分類項目をインポートするスクリプトは以下のようになります。こちらも IMPORT_FILE を実際にインポートするファイルのフルパスに置き換えてください。

' ここをトリプルクリックでスクリプト全体を選択できます。
On Error Resume Next
Const IMPORT_FILE = "C:\temp\categories.txt"
Dim olkApp 'As Outlook.Application
Dim objFSO 'As FileSystemObject
Dim stmFile 'As TextStream
Dim strLine 'As String
Dim arrField 'As Variant
Dim objCategory 'As Outlook.Category
'
Set olkApp = CreateObject("Outlook.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set stmFile = objFSO.OpenTextFile(IMPORT_FILE, 1 ) ' ForReading
While Not stmFile.AtEndOfStream
    strLine = stmFile.ReadLine
    arrField = Split(strLine, ";")
    olkApp.Session.Categories.Add arrField(2), arrField(0), arrField(1)
    If Err.Number <> 0 Then ' エラーが発生した場合は既存のものがあるのでそれを上書き
        Set objCategory = olkApp.Session.Categories.Item(arrField(2))
        objCategory.Color = arrField(0)
        objCategory.ShortcutKey = arrField(1)
    End If
Wend
stmFile.Close

広告

色分類項目のマスターをエクスポート/インポートするスクリプト」への1件のフィードバック

  1. 初めまして。moonと申します。
    コメントは初めてですが、Outlook の予定表に 2008 年以降の祝日を追加するスクリプトを
    参考にさせて頂き大変助かりました。。

    Outlook2000の頃から仕事で使用
    (現在、Outlook2013 Windows7 64bit をメイン)しています。
    Outlook2013 を使用する前はOutlook2003 Windows7 32bitを使用しており
    2007,2010等の間のバージョンはスルーしています。

    メインPC(Outlook2013 Windows7 64bit)がトラブルに見舞われ
    別PCのOutlook2010 Windows7 32bitにデータ移行をしました。

    メール,連絡先等のアイテムデータはOutlook2013でエクスポートし
    Outlook2010でアカウント設定(データファイル)の個人フォルダを
    エクスポートしたファイルに上書きし問題なく完了しましたが
    Outlook2003で連絡先へ設定していた【分類】と
    Outlook2013でメールへ設定した【分類項目】が
    Outlook2010では分類項目は初期値のままで設定していたものは
    (分類項目マスターにない)と表示されており、色も白で表示されています。

    今回も、分類項目で検索してこちらのページにたどり着きました。
    色分類項目のマスターをエクスポート/インポートするスクリプト 拝見いたしました。
    EXPORT_FILE を実際にエクスポートするファイルのフルパスに置き換えてください。とありましたが
    実際どこにエクスポートすべきなのか、判断できず。
    まずは、Const EXPORT_FILE = “C:\temp\categories.txt” のままで試みました。

    色分類項目をエクスポート.vbs として実行するとエラーがでました。
    ダミーのcategories.txtをC:\tempに作成し実行すると問題なくできました。
    と言っても、Outlook2010の分類項目初期値にプラスされたという感じで
    不要な初期値は手動で個別に削除しました。

    今回も大変、お世話になりました。
    参考になったお礼というか…
    経緯もあれば他の方にも参考になるかと思いコメントさせて頂きました。

    ありがとうございました。
    質問や疑問、マクロの要望もありますので、
    後日、https://outlooklab.wordpress.com/askme/ へコメントさせて頂きたいと考えております。
    その折には、よろしくお願い申し上げます。

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中