none
ExcelVBA Outlookメール作成の際 ①フォントサイズを11、②フォントをMS明朝 2点のやり方をご教示ください RRS feed

  • 質問

  • ExcelVBAのOutlookメール作成に関して質問がございます。

    ネットで検索しても該当箇所が見当たらず、、、よろしくお願い致します。

    質問事項

    ■フォントサイズとフォントの変更

    ExcelVBAのコード内への記入で、Outlookメールのフォントを変更することは可能でしょうか?

    現在、何故かExcelVBAでメール作成をすると、フォントMSPゴシック、サイズ12になります。(特に設定等は行っていません。)

    ちなみに、Outlookメールの設定はフォント游明朝、サイズ11です。

    今回は、フォントMS明朝、サイズ11にしたいと考えています。

    以下、現在のコードです。上記質問事項につきアドバイスいただけますと幸いでございます。

    '---コード1|outlookを起動する
        Dim toaddress, ccaddress, bccaddress As String  '変数設定:To宛先、cc宛先、bcc宛先
        Dim subject, mailBody, credit As String '変数設定:件名、メール本文、クレジット、添付
        Dim outlookObj As Outlook.Application    'Outlookで使用するオブジェクト生成
        Dim mailItemObj As Outlook.MailItem      'Outlookで使用するオブジェクト生成
       
    '---コード2|差出人、本文、署名を取得する---
        toaddress = Range("AS3").Value   'To宛先
        ccaddress = Range("AS4").Value   'cc宛先
        bccaddress = Range("AS5").Value  'bcc宛先
        subject = Range("AS6").Value     '件名
        mailBody = Range("AS7").Value    'メール本文
        credit = Range("AS21").Value      'クレジット

    '---コード3|メールを作成して、差出人、本文、署名を入れ込む---
        Set outlookObj = CreateObject("Outlook.Application")
        Set mailItemObj = outlookObj.CreateItem(olMailItem)
        mailItemObj.BodyFormat = 2      'HTML形式
        mailItemObj.To = toaddress      'to宛先をセット
        mailItemObj.CC = ccaddress      'cc宛先をセット
        mailItemObj.BCC = bccaddress    'bcc宛先をセット
        mailItemObj.subject = subject   '件名をセット
       
    '---コード4|メール本文を改行し、貼り付け
        mailItemObj.Body = mailBody & vbCrLf & vbCrLf & credit   'メール本文 改行 改行 クレジット
       
       
    '---コード5|自動で添付ファイルを付ける---
        Dim attached1 As String, attached2 As String
        Dim myattachments1 As Outlook.Attachments, myattachments2 As Outlook.Attachments 'Outlookで使用するオブジェクト生成
        Set myattachments1 = mailItemObj.Attachments
        attached1 = Range("AS22").Value     '添付ファイル1
        myattachments1.Add (attached1)
        Set myattachments2 = mailItemObj.Attachments
        attached2 = Range("AT22").Value     '添付ファイル2
        myattachments2.Add (attached2)

    '---コード6|メールを送信する---
        mailItemObj.Display  'メール表示(ここでは誤送信を防ぐために表示だけにして、メール送信はしない)

    '---コード7|outlookを閉じる(オブジェクトの解放)---
        Set outlookObj = Nothing
        Set mailItemObj = Nothing

    2020年3月30日 1:02

回答

  • メールのフォントなどを含む書式設定をする場合はメールの形式を HTML 形式か
    リッチテキスト形式にする必要がありますが、サイズが大きくなることや
    セキュリティ上の問題から、基本的には書式を含むことができないテキスト形式を
    利用することが強く推奨されています。
    人によってはテキスト形式以外のメールを受信拒否したり、自動的にテキスト形式に
    変換するように設定していたりする場合もあり、基本的には HTML 形式や
    リッチテキスト形式のメールは非推奨です。

    それを理解したうえで、どうしてもやりたい場合は Outlook のメールエディタは
    Word なのでそのまま Word のオブジェクトが利用できます。

    Option Explicit
    
    ' 参照設定で Microsoft Outlook xx.x Object Library と
    ' Microsoft Word xx.x Object Library を有効にしている
    ' 場合は以下の定数指定は不要
    Const olMailItem As Integer = 0
    
    Const olFormatHTML As Integer = 2
    Const olFormatRichText As Integer = 3
    
    Sub test()
        Dim mi As Object    ' MailItem
        Dim wdDoc As Object ' Word.Document
        Dim olApp As Object ' Outlook.Application
    
        ' MailItem を作成
        ' (Microsoft Outlook xx.x Object Library を参照設定しているときは
        ' CreateObject の代わりに New Outlook.Application とできる)
        Set olApp = CreateObject("Outlook.Application") ' New Outlook.Application
        Set mi = olApp.CreateItem(olMailItem)
    
        ' 送り先
        mi.To = "送り先"
    
        ' メールを HTML 形式にする
        mi.BodyFormat = olFormatHTML
    
        ' メールを表示する
        mi.Display
    
        ' メールの Word エディタを取得する
        Set wdDoc = olApp.ActiveInspector.WordEditor
        wdDoc.Windows(1).Document.Range.Text = "本文"
    
        ' メール本文のフォントを MS Pゴシック、
        ' フォントサイズを 11 に設定する
        With wdDoc.Windows(1).Document.Range.Font
            .Name = "MS PGothic"
            .Size = 10
        End With
    End Sub



    • 編集済み infade 2020年3月30日 7:23 コードの微修正 (追記)
    • 回答としてマーク mk12321 2020年3月30日 8:09
    2020年3月30日 7:16
  • すみません。
    上記のコードの内、olApp.ActiveInspector.WordEditor
    mi.GetInspector.WordEditor でいいかもしれません。
    試していないので正常に動作するかわかりませんが、動作するなら
    たぶん、こちらのほうがいいかと。
    • 回答としてマーク mk12321 2020年3月30日 8:09
    2020年3月30日 7:30

すべての返信

  • メールのフォントなどを含む書式設定をする場合はメールの形式を HTML 形式か
    リッチテキスト形式にする必要がありますが、サイズが大きくなることや
    セキュリティ上の問題から、基本的には書式を含むことができないテキスト形式を
    利用することが強く推奨されています。
    人によってはテキスト形式以外のメールを受信拒否したり、自動的にテキスト形式に
    変換するように設定していたりする場合もあり、基本的には HTML 形式や
    リッチテキスト形式のメールは非推奨です。

    それを理解したうえで、どうしてもやりたい場合は Outlook のメールエディタは
    Word なのでそのまま Word のオブジェクトが利用できます。

    Option Explicit
    
    ' 参照設定で Microsoft Outlook xx.x Object Library と
    ' Microsoft Word xx.x Object Library を有効にしている
    ' 場合は以下の定数指定は不要
    Const olMailItem As Integer = 0
    
    Const olFormatHTML As Integer = 2
    Const olFormatRichText As Integer = 3
    
    Sub test()
        Dim mi As Object    ' MailItem
        Dim wdDoc As Object ' Word.Document
        Dim olApp As Object ' Outlook.Application
    
        ' MailItem を作成
        ' (Microsoft Outlook xx.x Object Library を参照設定しているときは
        ' CreateObject の代わりに New Outlook.Application とできる)
        Set olApp = CreateObject("Outlook.Application") ' New Outlook.Application
        Set mi = olApp.CreateItem(olMailItem)
    
        ' 送り先
        mi.To = "送り先"
    
        ' メールを HTML 形式にする
        mi.BodyFormat = olFormatHTML
    
        ' メールを表示する
        mi.Display
    
        ' メールの Word エディタを取得する
        Set wdDoc = olApp.ActiveInspector.WordEditor
        wdDoc.Windows(1).Document.Range.Text = "本文"
    
        ' メール本文のフォントを MS Pゴシック、
        ' フォントサイズを 11 に設定する
        With wdDoc.Windows(1).Document.Range.Font
            .Name = "MS PGothic"
            .Size = 10
        End With
    End Sub



    • 編集済み infade 2020年3月30日 7:23 コードの微修正 (追記)
    • 回答としてマーク mk12321 2020年3月30日 8:09
    2020年3月30日 7:16
  • すみません。
    上記のコードの内、olApp.ActiveInspector.WordEditor
    mi.GetInspector.WordEditor でいいかもしれません。
    試していないので正常に動作するかわかりませんが、動作するなら
    たぶん、こちらのほうがいいかと。
    • 回答としてマーク mk12321 2020年3月30日 8:09
    2020年3月30日 7:30
  • 上記コードを組み合わせてフォント・サイズの変更が出来ました!

    また、セキュリティの観点も丁寧にご教示いただき、ありがとうございます。

    1点追加でお伺いしたいのですが、メールを作成した際に行間?が広くなってしまうのですが、こちらも対処法ありますでしょうか、、、

    初心者のため聞いてばかりで申し訳ございません、よろしくお願い致します。

    2020年3月30日 8:11