質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

Q&A

1回答

17807閲覧

OutlookとVBAにて、フォントサイズ、フォント体の反映について

iceclaimer

総合スコア4

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

1グッド

0クリップ

投稿2022/05/31 05:04

編集2022/05/31 05:33

エクセルVBAとOutlookを使って下図のようにエクセルのセル内の本文を参照してテンプレ文を表示するマクロを作成しています。
セル内にbrの改行タグは適用されるも、フォントサイズ、フォント体が上手く反映されません。メール作成マクロを実行した際、本来は游ゴシック・11ptで出力されてほしいのですが、デフォルトのMPゴシック体・10ptに出力されてしまいます。

ご教示お願いいたします。

コード Dim wb As Workbook Dim ws As Worksheet Set wb = ActiveWorkbook Set ws = wb.Worksheets("テンプレ文") Dim objOutlook As Outlook.Application Dim objMail As Outlook.MailItem Set objOutlook = New Outlook.Application Set objMail = objOutlook.CreateItem(olMailItem) With objMail .To = "MailAddress@xx.xx" 'メール宛先 .Subject = "メールの件名" 'メール件名 .body = "メール本文" 'メール本文 .BodyFormat = olFormatPlain 'メールの形式 .HTMLBody = "<div style=""font-family:游ゴシック;font-size:22pt;""> </div>" End With Dim oApp As New Outlook.Application Dim oItem As Outlook.MailItem Set oItem = oApp.CreateItem(olMailItem) 'メールを作成します oItem.To = ws.Range("D7") '宛先を入力します oItem.CC = ws.Range("D8") 'CCを入力します oItem.Subject = ws.Range("D9") & ws.Range("B3") '件名を入力します oItem.HTMLBody = ws.Range("D10") またエクセル内にはD10に下記の様に文字列を入れております。 <span style=”font-size:35pt”>担当者様<br><br> お疲れさまです。<br><br> お手数ですがよろしくお願い致します。<br><br> </span>
hatena19👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2022/05/31 05:11

このままではコードが読みづらいので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
y_waiwai

2022/05/31 05:12

んで、うまく反映されない、とはどういうふうに反映されるんでしょうか
iceclaimer

2022/05/31 05:18

承知しました。コード文を</>に再追記しました。 メール作成マクロを実行した際、本来は游ゴシック・11ptで出力されてほしいのですが、デフォルトのMPゴシック体・10ptに出力されてしまう、という意味でした。
y_waiwai

2022/05/31 05:28

質問は編集できますんで、そこらへんの説明は、質問文の方に書いておくとよろしいかと
iceclaimer

2022/05/31 05:33

ありがとうございます。再度修正致しました。
guest

回答1

0

テスト結果
https://youtu.be/vuq1fe29JU0?t=133
↑こんな感じで良ければ、下記のコードを試してみてください。

'作成したテストのコード Option Explicit Sub outlookでHTMLメールの作成後にフォントサイズ変更() Dim ws As Worksheet Set ws = ActiveSheet 'とりあえず、アクティブシートで 'ここからQAサイトのコード Dim oApp As New Outlook.Application Dim oItem As Outlook.MailItem Set oItem = oApp.CreateItem(olMailItem) 'メールを作成します oItem.To = ws.Range("D7") '宛先を入力します oItem.CC = ws.Range("D8") 'CCを入力します oItem.Subject = ws.Range("D9") & ws.Range("B3") '件名を入力します oItem.HTMLBody = ws.Range("D10") 'ここまで oItem.Display '勝手に確認しやすいように表示 'Wordの世界へ行く?うそうそ、編集だけ ' https://docs.microsoft.com/ja-jp/office/vba/api/outlook.inspector.wordeditor ' .GetInspector().WordEditor とかで検索してください Dim objDOC As Object Set objDOC = oItem.GetInspector().WordEditor 'Stop '段落で回して、選択しながら、フォントサイズ変更 Dim n As Integer '全ての段落をテスト表示 For n = 1 To objDOC.Paragraphs.Count Debug.Print n & ":" & objDOC.Paragraphs(n).Range.Text 'objDOC.Paragraphs(n).Range.Select '単純に段落をセレクト状態にして※エラーになるよ 'objDOC.Selection.Font.Size = 35 '選択範囲のフォントサイズ変更 objDOC.Paragraphs(n).Range.Font.Size = 35 Next n End Sub
<hr>

https://docs.microsoft.com/ja-jp/office/vba/api/outlook.inspector.wordeditor

メールアイテム.GetInspector().WordEditor
を使うと、編集をWordオブジェクトでできるので、
'Wordの世界へ行く?うそうそ、編集だけ
' https://docs.microsoft.com/ja-jp/office/vba/api/outlook.inspector.wordeditor
' .GetInspector().WordEditor とかで検索

Dim objDOC As Object Set objDOC = oItem.GetInspector().WordEditor

で、あとは、Wordの世界で、、※詳しい人に聞いてみてください・・・

1.フォントサイズを変える
Wordの世界なので、いろいろとやり方があると思いますが、
手前みそ回答の
https://teratail.com/questions/319919
から
'全ての段落をテスト表示
For n = 1 To ActiveDocument.Paragraphs.Count
Debug.Print n & ":" & ActiveDocument.Paragraphs(n).Range.Text
Next n
これを、

For n = 1 To objDOC.Paragraphs.Count Debug.Print n & ":" & objDOC.Paragraphs(n).Range.Text 'objDOC.Paragraphs(n).Range.Select '単純に段落をセレクト状態にして※エラーになるよ 'objDOC.Selection.Font.Size = 35 '選択範囲のフォントサイズ変更 objDOC.Paragraphs(n).Range.Font.Size = 35 Next n


して、フォントのサイズを変更しただけでした。

急ぎかわからなかったので、ノー編集の動画ですが
https://www.youtube.com/watch?v=vuq1fe29JU0
ExcelからHTMLメール作成のヒントとなれば幸いです。
※Set objDOC = oItem.GetInspector().WordEditor
で Wordのオブジェクトで触れるので、あとは、VBA Wordのプロにイロイロ質問してみてくださいね。

投稿2022/06/01 04:52

ken3memo

総合スコア132

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ken3memo

2022/06/01 08:05

質問文に記載されていた、フォントの変更、忘れてました。 Word VBAでFontを変えるのが、 Selection.Font.Name = "游ゴシック" なので、ここを変えると objDOC.Paragraphs(n).Range.Font.Size = 35 objDOC.Paragraphs(n).Range.Font.Name = "游ゴシック" フォントが変更されると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問