【Outlook VBA】メール本文を改行する方法!改行されない対処法も!

Outlook VBAでメール本文を改行したいときはないでしょうか。

けど、そんな中で悩むことは、

・Outlook VBAでメール本文を改行したいが方法がわからない。
・Outlook VBAでメール本文に改行コードを入れたがうまく改行できない。

ですよね。

今回はそんなお悩みを解決する

・Outlook VBAでメール本文を改行する方法
・Outlook VBAでメール本文が改行されない原因と対処法

についてまとめます!

Outlook VBAでメール本文を改行するイメージ

Outlook VBAでメール本文を改行するイメージについて説明をします。

メールをOutlook側のマクロを実行すると自動生成される仕組みを用意し、

メール本文に改行付き文章を代入すると、

.Body = "宛先各位" & strBr _
& "以下の通り報告いたします。" & strBr & strBr _
& "9:00:朝礼" & strBr _
& "10:00:商品納品" & strBr _
& "13:00:定例会" & strBr _
& "15:00:定期作業" & strBr _
& "17:00:日報作成" & strBr & strBr _
& "以上/A部タカヒロ"

メール本文も改行される形になります。

また、以下のように改行されない場合の原因と対処法についても説明していきます。

それでは早速試してみましょう。

VBAでサポートされている改行コードの種類

VBAの改行コードの種類は以下の通りです。

改行コード一覧

改行コード 説明 定数
CR macOSのバージョン9以前に使用されている改行コードです。 vbCr Chr(13)
LF macOS9以降で、Unix、Linuxにも利用されている改行コードです。 vbLf Chr(10)
CRLF WindowsOSやMS-DOS で使用している改行コードです。 vbCrLf Chr(13) + Chr(10)
プラットフォーム固有の改行文字。現在のプラットフォームに対応する文字が使用されます。 vbNewLine Chr(13) + Chr(10)、Macintosh の場合はChr(13)

参考:https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/miscellaneous-constants

CRはCarriage Returnといい、古くはApple IIというAppleが発表したPCの2代目から採用された改行コードとなります。由来の通りApple製PCのみのサポートであり、現在はあまり使われていません。

LFはLine Feedといい、 Unixに採用された改行コードとなります。Unixから派生したLinux、macOS、AmigaなどのOSにも採用されています。なお、Excelのセル内で改行するときに入るコードはこちらのLFとなります。

CRLFはCRとLFを合わせた改行コードとなり、WindowsOSに採用されています。MS-DOSでコマンドを打つ時の改行コードもこちらになります。異なる環境間でやり取りするファイルの改行コードがLFかCRLFかで迷ったらCRLFを選択すればよいでしょう。

vbNewLineはVBA独自の定数で、CRLFとCRを環境に応じて自動変換してくれます。ただし、Macは古い方のCRとなるので、MacOS9以降ではうまく改行されない可能性があります…

タカヒロ
タカヒロ
結論としてはOutlookメールにおいてどの改行コードも問題なく機能します。ただしWindows以外のOSやOutlook以外のメーラーとやり取りすることを考えるとLFやLFを含んでいるCRLFあたりを採用することがよいでしょう。

Outlook VBAでメール本文を改行する方法

Outlook VBAでメール本文を改行する方法について説明をします。

Chr関数を使用して改行する

Chr関数の説明

Chr関数を使用して改行をしていきます。Chr関数の詳細は以下の通りです。

関数名 Chr()
機能 指定した文字コードと関連付けられている文字を返します。
書式 Chr(charcode)
引数 charcodeを半角文字は0 から255、全角文字は-32768 ~ 65536まで指定します。改行コードは10と13です。

Chr関数で改行するVBA

Chr関数で改行をする方法について説明をします。

サンプルではメール本文となるBodyプロパティに改行コードを挿入するようにしています。
改行コードはCR(Chr(13))、LF(Chr(10))、CRLF(Chr(13) + Chr(10))それぞれを使用します。まずはCRから確認してみましょう。

サンプルコードは以下の通りです。

Sub Outlookの改行入りメールを新規作成する1()

    'Outlook用の定義
    Dim objMail As Object
    Dim strBr As Variant

    '改行コードを指定します。
    strBr = Chr(13)

    'メールを新規作成し、オブジェクトにセットします。
    Set objMail = CreateItem(olMailItem)
        
    With objMail
        
        ' 「3」の場合リッチテキスト型となります。「1」はテキスト型、「2」は HTML型となります。
        .BodyFormat = 3
        
        '件名を指定します。
        .Subject = "改行コードテスト"
        
        '本文を指定します。
        .Body = "宛先各位" & strBr _
                & "以下の通り報告いたします。" & strBr & strBr _
                & "9:00:朝礼" & strBr _
                & "10:00:商品納品" & strBr _
                & "13:00:定例会" & strBr _
                & "15:00:定期作業" & strBr _
                & "17:00:日報作成" & strBr & strBr _
                & "以上/A部タカヒロ"
                
        'Toを指定します。
        .To = "user1@extan.jp"
        
        'メールを表示します。
        .Display
    
    End With

    'オブジェクトを解放します。
    Set objMail = Nothing
    
End Sub

VBAを設定する

VBAを設定していきましょう。

改行コードを指定します。

strBr = Chr(13)

本文のテキスト形式を指定します。「3」の場合リッチテキスト型となります。「1」はテキスト型、「2」は HTML型となります。

.BodyFormat = 3

タカヒロ
タカヒロ
今回はリッチテキスト型を指定しています。

件名を指定します。

.Subject = "改行コードテスト"

本文を指定します。変数strBrに改行コードが入ります。

.Body = "宛先各位" & strBr _

タカヒロ
タカヒロ
件名/本文の内容は適宜変えて頂ければと思います。

VBAの実装

VBAの実装方法については
VBAの実装手順
をご参照ください。

VBAを実行する

VBAを実行してみましょう。

はい、本文が改行されていますね。

LF(Chr(10))改行コードで改行されるか確認

LF(Chr(10))の改行コードで改行されるか確認してみましょう。

改行コードをLF(Chr(10))に指定します。

strBr = Chr(10)

VBAを実行してみましょう。

改行されいますね!

CRLF(Chr(13) + Chr(10))改行コードで改行されるか確認

CRLF(Chr(13) + Chr(10))の改行コードで改行されるか確認してみましょう。

改行コードをCRLF(Chr(13) + Chr(10))に指定します。

strBr = Chr(13) + Chr(10)

VBAを実行してみましょう。

こちらも改行されいますね!

定数を使用して改行する

定数指定で改行をする方法について説明をします。

CR(vbCr)、LF(vbLf)、CRLF(vbCrLf)、vbNewLineを使います。

サンプルコードはChr関数版と同じです。

CR(vbCr)改行コードで改行されるか確認

CR(vbCr)の改行コードで改行されるか確認してみましょう。

改行コードをCR(vbCr)に指定します。

strBr = vbCr

VBAを実行してみましょう。

改行されいますね!

LF(vbLf)改行コードで改行されるか確認

LF(vbLf)の改行コードで改行されるか確認してみましょう。

改行コードをLF(vbLf)に指定します。

strBr = vbLf

VBAを実行してみましょう。

改行されいますね!

CRLF(vbCrLf)改行コードで改行されるか確認

CRLF(vbCrLf)の改行コードで改行されるか確認してみましょう。

改行コードをCRLF(vbCrLf)に指定します。

strBr = vbCrLf

VBAを実行してみましょう。

こちらも改行されいますね!

vbNewLine改行コードで改行されるか確認

vbNewLineの改行コードで改行されるか確認してみましょう。

改行コードをvbNewLineに指定します。

strBr = vbNewLine

VBAを実行してみましょう。

はい、改行されいますね!

HTMLコードで改行するVBA

HTMLコードで改行をする方法について説明をします。

サンプルではメール本文となるHTMLBodyプロパティにHTMLコードの改行を意味する<BR>を挿入するようにしています。

サンプルコードは以下の通りです。

Sub Outlookの改行入りメールを新規作成する2()

    'Outlook用の定義
    Dim objMail As Object
    Dim strBr As Variant

    '改行コードを指定します。
    strBr = "<BR>"

    'メールを新規作成し、オブジェクトにセットします。
    Set objMail = CreateItem(olMailItem)
        
    With objMail
        
        ' 「3」の場合リッチテキスト型となります。「1」はテキスト型、「2」は HTML型となります。
        .BodyFormat = 2
        
        '件名を指定します。
        .Subject = "改行コードテスト"
        
        '本文を指定します。
        .HTMLBody = "宛先各位" & strBr _
                & "以下の通り報告いたします。" & strBr & strBr _
                & "9:00:朝礼" & strBr _
                & "10:00:商品納品" & strBr _
                & "13:00:定例会" & strBr _
                & "15:00:定期作業" & strBr _
                & "17:00:日報作成" & strBr & strBr _
                & "以上/A部タカヒロ"
                
        'Toを指定します。
        .To = "user1@extan.jp"
        
        'メールを表示します。
        .Display
    
    End With

    'オブジェクトを解放します。
    Set objMail = Nothing
    
End Sub

VBAを設定する

VBAを設定していきましょう。

HTMLコードで改行を意味する”<BR>”を指定します。

strBr = "<BR>"

本文のテキスト形式を指定します。今回はHTML形式のため「2」となります。

.BodyFormat = 2

件名を指定します。

.Subject = "改行コードテスト"

本文を指定します。変数strBrに改行コードが入ります。

.HTMLBody = "宛先各位" & strBr _

タカヒロ
タカヒロ
テキスト形式でHTML型を指定した場合、BodyプロパティではなくHTMLBodyプロパティを使用します。

VBAを実行する

VBAを実行してみましょう。

はい、本文が改行されていますね!

Outlook VBAでメール本文が改行されない原因と対処法

Outlook VBAでメール本文が改行されない原因と対処法について説明をします。

原因その1:本文のテキスト形式と合っていない改行コードを指定している

原因その1は本文テキスト形式と合っていない改行コードを指定となります。

例えば本文のテキスト形式のBodyFormat プロパティをHTMLモードにした上、HTMLBodyプロパティに改行コードを指定するとHTMLのコードと判断されず無効化されます。

原因その1の対処法

原因その1の対処法は、本文のテキスト形式にあった改行コードを指定するようにしましょう。

原因その2:定数vbNewLineを指定している

原因その2は定数vbNewLineを指定している場合となります。

Windows環境では改行されますが、それ以外の環境では改行されない場合があります。

原因その2の対処法

原因その2の対処法は、定数vbNewLine以外の定数を使うようにしましょう。

VBAの実装手順

VBAを設置する下準備をする

VBAを設置するための下準備をしましょう。

「開発」タブがリボンメニューにない場合は
以下を参考に表示させます。

Outlook VBAをはじめよう!初心者向け手引き

VBAを登録する

次にマクロを登録します。

「開発」タブ>「Visual Basic」を押します。

「Visual Basic Editor」にて、[Project1] > [Microsoft Outlook Objects] > [ThisOutlookSession] を開き、こちらにコードを貼り付けます。

こちらで実装完了です。

VBAを実行する

VBAを実行する手順となります。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。

さいごに

いかがでしょうか。

今回は、

・Outlook VBAでメール本文を改行する方法
・Outlook VBAでメール本文が改行されない原因と対処法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です