Windows XP の Outlook Express 6.0 のメールデータを Windows 7 の Outlook 2007 に移行する方法

メッセージで以下のようなご質問をいただきました。


Windows XP で Outlook Express を使っています。新しく Windows 7 のパソコンを買ったのでメールデータをコピーしたいのですが、Windows 7 に Outlook Express がありません。Outlook 2007 は入っているのですが、Windows XP の Outlook Express から Windows 7 の Outlook 2007 にデータをコピーできるのでしょうか?


Windows XP の Outlook Express から Windows 7 の Outlook 2007 にデータをコピーすることは可能です。一番手っ取り早いのは Windows 7 の「Windows 転送ツール」を使用することでしょう。Windows 転送ツールを使用すると、ユーザーの設定やデータ ファイルなどを Windows XP のパソコンから Windows 7 のパソコンにコピーすることができ、コピーされるデータの中には Outlook Express の設定やメッセージデータなども含まれています。そして、設定やデータを転送した後に Windows 7 上で Outlook 2007 を起動し、[ファイル]-[インポートとエクスポート] で [他のプログラムまたはファイルからのインポート] により [Outlook Express 4.x、5.x、6.x、または Windows Mail] を選択してインポートすることで、Outlook 2007 に Outlook Express のメールが転送できます。Windows 7 には Outlook Express も Windows Mail も入っていないはずなのですが、Program Files に Windows Mail というフォルダが存在し、Outlook 2007 でインポートするために必要なファイルがここに含まれているので、インポートだけはできるようです。

ポイントとなるのは、設定とメールデータを一緒に転送しているということです。Outlook 2007 のインポート機能では、Outlook Express のデータが保存されている場所を指定することができず、Windows に設定されている Outlook Express のデータ保存場所からインポートを行います。そのため、データだけをコピーしても、Outlook 2007 からではデータをインポートすることができません。Windows 転送ツールにより設定とデータを整合性を保って転送することにより、Outlook 2007 からのインポートが可能となるのです。

したがって、すでに Windows XP は破棄してしまっていて Outlook Express のデータだけが残っているという場合、上記の方法は使用できません。この場合には Windows 7 のパソコンに Windows Live メールをインストールする必要があります。そして、Windows Live メールにより Outlook Express のメールデータをインポートし、[Microsoft Exchange] にエクスポートすることで Outlook 2007 にメールデータを移行できます。なお、Windows Live メールでインポートを行うと、メールが [保存フォルダー]-[インポートされたフォルダー] の下にインポートされるのですが、このフォルダは Outlook 2007 でインポートする際にインポートの対象とならないため、Windows Live からエクスポートする必要があります。

Windows 7 の Windows 転送ツールの使い方や注意点などの詳細については、以下の Web ページをご覧ください。

Windows 7 アップグレード徹底ガイド
Windows 7 でメールを快適に使おう

Outlook 2007 の累積的な修正プログラムと Office 2003 の RMS に関する修正プログラムがリリース

12/16 (米国時間 12/15) に Office 2007 製品の累積的な修正プログラム (以下、CU) がリリースされました。
以下は Outlook 2007 に関連する製品のそれぞれの CU の KB へのリンクです。

977032 Office Outlook 2007 修正プログラム パッケージ (Outlook x none.msp) の説明: 2009 年 12 月 15 日
9 個の不具合が修正されています。

977029 号: 977029 – 最終更新日: 2009年12月15日 – リビジョン: 1.0 Office Word 2007 修正プログラム パッケージ (Word-x-none.msp、none.msp-Wordconv-x) の説明: 2009 年 12 月 15 日
Outlook に関連しているものとして、Outlook 2003 で作成した PST のメールを開くと本文が空になる現象や、返信や転送の際に書式が変わってしまう現象などが修正されています。

なお、その他の Office 2007 製品の今月リリースの累積的な修正プログラムへのリンクは以下の KB で公開されています。

978223 Office 2007 2009 の 12 月の累積的な更新プログラム

また、Office 2003 で RMS (IRM や DRM とも言いますが) により保護したファイルが開けなくなるという問題についての修正が 12/11 にリリースされています。Outlook 2003 で RMS を使用している場合は下記の KB より修正プログラムをダウンロードして適用する必要があります。

978551 AD RMS/RMS 修正プログラム パッケージで保護された Office 2003 ドキュメント (2009 年 12 月 11 日) について

Outlook Hotmail Connect 14.0 のベータがリリース

Outlook Connector の新しいバージョンである Outlook Hotmail Connector のバージョン 14.0 のベータ版がリリースされました。

Outlook 2010 用に開発されたものですが、Outlook 2007 や Outlook 2003 でも使用できます。追加された機能としては、迷惑メールフィルタのリストの共有や Outlook の受信トレイへの自動仕分けルールの適用などがあります。また、ちょっと使ってみたところ、連絡先の名前が常に「名姓」の順番になってしまうという不具合が解消されているようです。

ダウンロードは以下の URL からできます。

http://www.microsoft.com/downloads/details.aspx?FamilyID=3d003da0-f684-4f4d-a9c8-8d15b84f60d1&DisplayLang=ja

また、詳細については、以下のブログ記事も参考にしてください。(英語です)

http://beta.blogs.msdn.com/outlook/archive/2009/12/04/announcing-the-outlook-hotmail-connector-beta.aspx

Outlook 2007 で半角英数字を入力するとフォントが Arial になる現象の回避方法

以前、Outlook 2003 で本文の入力の際に半角英数字のフォントが Arial になってしまう現象についての回避策を紹介しました。

この現象は Outlook 2007 でも発生するのですが、Outlook 2007 はメールの編集に Word 2007 のコンポーネントを使っているので、上記の記事で紹介した DontUseDualFont の対処方法では半角英数字を日本語フォントにすることはできません。
Outlook 2007 では以下の設定で現象を回避することができます。

  1. [ツール]-[オプション] をクリックします。
  2. [メール形式] の [ひな形およびフォント] をクリックします。
  3. [新しいメッセージ] の下の [文字書式] をクリックします。
  4. [英数字用のフォント] で [(日本語用と同じフォント)] を選択します。
  5. [OK] をクリックします。
  6. [返信/転送メッセージ] の下の [文字書式] をクリックします。
  7. [英数字用のフォント] で [(日本語用と同じフォント)] を選択します。
  8. [OK] をクリックし、すべてのダイアログを閉じます。

特定の名前の添付ファイルが開けなかったり、HTML メールの画像が表示されない問題について

Outlook で定期的に同じ名前の添付ファイルを受信したり、画像が埋め込まれた HTML メールを受信したりしている場合、添付ファイルが開けなくなったり、画像が赤い×印になって表示されなくなったりすることがあります。

これは、Oultook の一時フォルダに同一の名のファイルが多数作成され続けた結果、新たに同じ名前のファイルが作成できなくなった場合に発生する現象です。Outlook は同一の名前のファイルが一時フォルダに存在した場合には [1]、[2] というようにファイル名に連番を追加しますが、これが 99 まで達するとそれ以上ファイルを作成できなくなります。このような現象が発生した際には、以下の手順で Outlook の一時ファイルを削除してみてください。

  1. ファイル名を指定して実行で "regedit" と入力し、[OK] をクリックします。
  2. 左ペインで [マイ コンピュータ]-[HKEY_CURRENT_USER]-[Software]-[Microsoft]-[Office]-[バージョン]-[Outlook]-[Security] の順に展開します。 なお、バージョン には Outlook のバージョンごとに以下の値が入ります。
    Outlook 2010: 14.0
    Outlook 2007: 12.0
    Outlook 2003: 11.0
    Outlook 2002: 10.0
    たとえば、Outlook 2010 なら[マイ コンピュータ]-[HKEY_CURRENT_USER]-[Software]-[Microsoft]-[Office]-[14.0]-[Outlook]-[Security] になります。

  3. 右ペインで [OutlookSecureTempFolder] をダブルクリックします。
  4. [値のデータ] に表示される文字列をすべてコピーします。通常は "C:\Documents and Settings\ユーザー名\Local Settings\Temporary Internet Files\xxxxxxxx\" または "C:\Users\ユーザー名\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook\xxxxxxxx\ のような値です。
  5. ファイル名を指定して実行でコピーした文字列を [名前] にコピーし、[OK] をクリックします。
  6. 開いたフォルダにあるファイルをすべて削除します。

また、頻繁にこのような現象が発生するということであれば、以下のようなスクリプトを定期的に実行して、Outlook の一時フォルダを空にすることが可能です。

' ここをトリプルクリックでスクリプト全体を選択できます
Const OUTLOOK_VER = "14.0" ' Outlook 2007 なら 12.0、Outlook 2003 なら 11.0、Outlook 2002 なら 10.0 にする。
Dim wshShell
Dim objFSO
Dim strTempPath
Dim fldTemp
Dim fileTemp
'
Set wshShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
strTempPath = wshShell.RegRead("HKCU\Software\Microsoft\Office\" & OUTLOOK_VER & "\Outlook\Security\OutlookSecureTempFolder")
Set fldTemp = objFSO.GetFolder(strTempPath)
'
For Each fileTemp In fldTemp.Files
    fileTemp.Delete
Next
'
Set fldTemp = Nothing
Set objFSO = Nothing
Set wshShell = Nothing

なお、通常であれば一時フォルダのファイルは自動的に削除されますが、以下のような場合に一時フォルダにファイルが残る現象が発生します。

  • 添付ファイルを直接開いたまま、元のメッセージを閉じてしまった。
  • 添付ファイルを開いた状態で Outlook が強制終了した。
  • Outlook が一時フォルダのファイルを削除する際に、ウィルススキャンなどの要因で削除が失敗した。

添付された Excel ファイルの内容を受信の際に本文に追記するマクロ

メッセージで以下のようなご質問をいただきました。


弊社では、あるシステムから定期的に Excel ファイルを添付したメッセージが送信されてきます。このメッセージの添付ファイルを毎回開くのが手間なのですが、受信時に本文へ Excel のデータを自動的に埋め込むことはできないでしょうか?


Excel には HTML 形式で保存する機能がありますので、受信時に添付された Excel ファイルを HTML 形式で保存し、その HTML データを本文に追記することでご要望の動作が可能となるでしょう。

マクロは以下の通りです。

' ここをトリプルクリックでマクロ全体を選択できます。
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    ImportExcelSheet EntryIDCollection
End Sub
'
Sub ImportExcelSheet(EntryIDCollection)
    Const REPORT_SUBJECT = "Daily Report *" ' マクロを実行する必要があるメッセージの件名を指定します。
    Dim objItem 'As MailItem
    Set objItem = Session.GetItemFromID(EntryIDCollection)
    ' 通常のメッセージでなければ無視
    If objItem.MessageClass <> "IPM.Note" Then
        Exit Sub
    End If
    ' 条件に合致するかどうかと添付ファイルがあるかのチェック
    If objItem.Subject Like REPORT_SUBJECT And _
        objItem.Attachments.Count = 1 Then
        Dim objAttach As Attachment
        Set objAttach = objItem.Attachments(1)
        ' 添付ファイルが Excel かどうかのチェック
        If objAttach.FileName Like "*.xls" Or objAttach.FileName Like "*.xls?" Then
            Dim objFSO 'As FileSystemObject
            Dim objShell 'As WshShell
            Dim strFileName As String
            Dim objWookbook 'As excel.Workbook
            Dim stmCss 'As TextStream
            Dim stmHtml 'As TextStream
            ' 一時フォルダに格納するためのファイル名を作成
            Set objShell = CreateObject("WScript.Shell")
            strFileName = objShell.ExpandEnvironmentStrings("%temp%\" & objAttach.FileName)
            Set objShell = Nothing
            ' 同名のファイルがすでに存在する場合は削除
            Set objFSO = CreateObject("Scripting.FileSystemObject")
            If objFSO.FileExists(strFileName) Then
                objFSO.DeleteFile strFileName, True
            End If
            If objFSO.FileExists(strFileName & ".htm") Then
                objFSO.DeleteFile strFileName & ".htm", True
            End If
            ' 添付ファイルを保存
            objAttach.SaveAsFile strFileName
            Set objAttach = Nothing
            ' 保存したファイルを開く
            Set objWookbook = GetObject(strFileName)
            ' 最初のワークシートを HTML 形式で保存
            objWookbook.Worksheets(1).SaveAs strFileName & ".htm", 44 ' 44 = xlHtml
            objWookbook.Close
            Set objWorkbook = Nothing
            ' CSS と HTML ファイルを読み込み
            Set stmCss = objFSO.OpenTextFile(strFileName & ".files\stylesheet.css")
            Set stmHtml = objFSO.OpenTextFile(strFileName & ".files\sheet001.htm")
            ' HTML 本文の最後に HTML として保存した Excel ファイルを追加
            objItem.HTMLBody = objItem.HTMLBody & Replace(stmHtml.ReadAll, _
                "<link rel=Stylesheet href=stylesheet.css>", _
                "<style>" & vbCrLf & stmCss.ReadAll & vbCrLf & "</style>" & vbCrLf)
            objItem.Save
            Set objItem = Nothing
            stmCss.Close
            stmHtml.Close
            Set stmCss = Nothing
            Set stmHtml = Nothing
            Set objFSO = Nothing
        End If
    End If
End Sub

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

配信不能レポートに添付されたメッセージの差出人にメッセージを送信するマクロ

コメントで以下のようなご質問をいただきました。


添付ファイルとして、メール(*.msg)ファイルが付いているメールを受信した時に、その添付msgファイル内のメール送信者に対して、自動で返信する事は可能でしょうか。
「ExchangeServer2003 + Outlook2007」の環境で、配信不能レポート(NDR)が発生した場合に、「原因となったメール」の発信者に補足情報をメール送信できないかと考えています。
ExchangeServerの設定でNDRのコピーを指定アドレスに送信できるので、現在は管理者あてに送信して手作業で都度対応していますが、これを自動化したいのです。
NDRには「原因となったメール」がmsgファイルとして添付されていますので、そこから発信者のメールアドレスを取得して、固定の件名とメッセージを本文にセットして送信できないでしょうか。

この対応専用のメールアカウントを用意できますので、配信不能通知に添付されている「原因メール」の送信者に
自動でメール送信さえできれば、その他は「処理済の配信不能通知」も含めて、全て削除して頂いて結構です。
むしろ、送信済メールも残らない様にして頂けると完璧です。


メッセージに添付された別のメッセージを MailItem オブジェクトとして直接開くことはできませんが、いったんファイルに保存してから OpenSharedItem メソッドにより開くことで、メッセージの情報を取得することが可能です。
以下は、受信したメッセージが配信不能通知だった場合に、元のメッセージの送信者にメールを自動送信し、処理後に受信メッセージなどを含めてすべて削除するサンプル コードです。

' ここをトリプルクリックでマクロ全体を選択できます。
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    Dim arrEntryID
    Dim strEntryID
    Dim i As Integer
    Dim fldSent
    Dim fldDumpster
    arrEntryID = Split(EntryIDCollection, ",")
    For Each strEntryID In arrEntryID
        NotifyToNDRSender strEntryID
    Next
    ' 送信済みアイテムを削除
    Set fldSent = Session.GetDefaultFolder(olFolderSentMail)
    For i = fldSent.Items.Count To 1 Step -1
        fldSent.Items(i).Delete
    Next
    ' 削除済みアイテム フォルダを空にする
    Set fldDumpster = Session.GetDefaultFolder(olFolderDeletedItems)
    For i = fldDumpster.Items.Count To 1 Step -1
        fldDumpster.Items(i).Delete
    Next
End Sub
Private Sub NotifyToNDRSender(ByVal strEntryID As String)
    Dim repItem As Object
    Dim objFS As Object
    Dim strTemp As String
    Dim orgMail As MailItem
    Dim notifMail As MailItem
    Dim notifRec As Recipient
    ' エントリー ID からアイテムを取得
    Set repItem = Session.GetItemFromID(strEntryID)
    ' 配信不能メッセージは MessageClass が REPORT.IPM.Note.NDR となる
    If repItem.MessageClass = "REPORT.IPM.Note.NDR" Then
        ' 一時ファイルとして添付されたオリジナルのメッセージを保存
        Set objFS = CreateObject("Scripting.FileSystemObject")
        strTemp = objFS.GetSpecialFolder(2) & objFS.GetTempName() & ".msg"
        repItem.Attachments(1).SaveAsFile strTemp
        ' 保存したメッセージからアイテムを作成
        Set orgMail = Session.OpenSharedItem(strTemp)
        ' 通知用のメッセージを作成
        Set notifMail = Application.CreateItem(olMailItem)
        notifMail.Subject = "メール送信エラー" ' 通知メールの件名を指定します。
        notifMail.Body = "メールの送信に失敗しました。"  ' 通知メールの本文を指定します。
        ' オリジナルのメッセージの送信者を宛先に指定
        Set notifRec = notifMail.Recipients.Add(orgMail.SenderEmailAddress)
        notifRec.Resolve
        ' 通知メッセージを送信
        notifMail.Send
        ' 元のメッセージと一時ファイルを削除
        orgMail.Delete
        objFS.DeleteFile strTemp
    End If
    ' 受信メッセージを削除
    repItem.Delete
End Sub

 

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

Outlook で HTML ソースの編集を行うマクロ

Outlook Express では HTML メールのソースを編集することができるのですが、Outlook ではその機能がありません。
そこで、Outlook で HTML メールのソースを編集するマクロを作ってみました。コードは以下の通りです。

' ここをトリプルクリックでマクロ全体を選択できます。
Sub HTMLEdit()
    Dim objShell As Object
    Dim objFso As Object
    Dim strFileName As String
    Dim stmFile As Object
'
    Set objShell = CreateObject("WScript.Shell")
    Set objFso = CreateObject("Scripting.FileSystemObject")
    strFileName = objShell.ExpandEnvironmentStrings("%temp%\") & objFso.GetTempName()
    Set stmFile = objFso.CreateTextFile(strFileName, True)
    stmFile.WriteLine ActiveInspector.CurrentItem.HTMLBody
    stmFile.Close
    objShell.Run "%windir%\notepad " & strFileName, , True
    Set stmFile = objFso.OpenTextFile(strFileName, 1)
    ActiveInspector.CurrentItem.HTMLBody = stmFile.ReadAll
    stmFile.Close
    objFso.DeleteFile strFileName
End Sub

使用方法:

  1. 新規メッセージを作成します。
  2. 上記のマクロを実行します。
  3. メモ帳が起動しますので、HTML ソースを編集して上書き保存します。
  4. メモ帳を閉じると、編集した HTML ソースがメッセージに反映されます。

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

Outlook 2007 の累積的な修正プログラムがリリース

10/28 (米国時間 10/27) に Office 2007 製品の累積的な修正プログラム (以下、CU) がリリースされました。ただ、Outlook 関連の CU は1日遅れてリリースされたようです。
以下は Outlook 2007 に関連する製品のそれぞれの CU の KB へのリンクです。

974994 Office Outlook 2007 修正プログラム パッケージ (Outlook x none.msp) の説明: 2009 年 10 月 27 日
20 ちょっとの不具合が修正されています。

976176 Office Word 2007 修正プログラム パッケージ (Outlook-x-none.msp、none.msp の Word の x) の説明: 2009 年 10 月 27 日
Word 2007 の修正となっていますが、Word と Outlook をセットで修正しています。

なお、その他の Office 2007 製品の今月リリースの累積的な修正プログラムへのリンクは以下の KB で公開されています。

976730 Office 2007 2009 年 10 月の累積的な更新プログラム

Windows Vista の 64 ビット バージョンで [コントロール パネル] に [メール] が表示されない現象について

メッセージで以下のようなご質問をいただきました。


http://support.microsoft.com/kb/932569/ja を参考にして、Outlook でプロファイルを追加しようとしたのですが、[コントロール パネル] に [メール] というアイコンがありません。
どうすれば [メール] のアイコンを追加できるのでしょうか?


Windows Vista の 64 ビット バージョンを使用している場合、[コントロール パネル] に [メール] のアイコンは表示されません。これは、[メール] 設定を行うためのファイルが 32 ビット バージョンしか存在しないためです。64 ビット バージョンで [メール] アイコンを表示するには、[追加オプション]、[32 ビットのコントロール パネルの項目の表示] の順にクリックします。

64 ビットの環境でほかにも起こりうる問題としては以下のようなものがあります。

  • IE の 64 ビット バージョンで Outlook View Control が使用できない。
  • CScript.exe や WScript.exe の 64 ビット バージョンで CreateObject("Outlook.Application") がエラーとなる。

なお、いずれリリースされる Office 2010 では 64 ビット バージョンの Outlook もありますので、上記のような問題はなくなるでしょう。
また、Windows 7 の 64 ビット バージョンではコントロール パネルに [メール (32 ビット)] として表示されます。