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

質問
-
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
回答
-
メールのフォントなどを含む書式設定をする場合はメールの形式を 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
すべての返信
-
メールのフォントなどを含む書式設定をする場合はメールの形式を 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