outlook メール作成のVBAに関して
下記のコード(抜粋)にてメール作成してますが
bodyformat でHTML を選定すると改行幅が大きくなる(通常改行幅の2倍程度)ため
HTMLを選定しても通常の改行幅になるようにしたいです。
分かる方いらっしゃいましたらご教授下さい。
宜しくお願いします。
Private Sub CommandButton3_Click()
'If Label2.Caption = "" Then MsgBox ("宛先アドレスを設定してください。"): Exit Sub
Dim outlookObj As Outlook.Application
Dim mailObj As Outlook.MailItem
Set outlookObj = New Outlook.Application
Set mailObj = outlookObj.CreateItem(olMailItem)
M = Worksheets("メール内容").Cells(5, 2) '件名 選択
N = Worksheets("メール内容").Cells(9, 2) '本文 選択
'メール送信内容の作成
With mailObj
.To = NN 'メール宛先
.CC = MM 'メールCC
.Subject = M 'メール件名
.Body = N 'メール本文
.BodyFormat = 2 'メール形式設定
.Display
End With
Unload Me
End Sub
No.3ベストアンサー
- 回答日時:
本文は今まで通り、B9で抽出時、文字を変更しては、どうでしょう。
メインプロシージャが分かり難くなると思いますので、Functionで分けるのが良いと思います。
サンプル
Private Sub CommandButton3_Click()
'If Label2.Caption = "" Then MsgBox ("宛先アドレスを設定してください。"): Exit Sub
Dim outlookObj As Outlook.Application
Private Sub CommandButton3_Click()
'If Label2.Caption = "" Then MsgBox ("宛先アドレスを設定してください。"): Exit Sub
Dim outlookObj As Outlook.Application
Dim mailObj As Outlook.MailItem
Set outlookObj = New Outlook.Application
Set mailObj = outlookObj.CreateItem(olMailItem)
Dim N As String, M As String, NN As String, MM As String
M = Worksheets("メール内容").Cells(5, 2) '件名 選択
N = Worksheets("メール内容").Cells(9, 2) '本文 選択
N = htmlTest(N)
'メール送信内容の作成
With mailObj
.To = NN 'メール宛先
.CC = MM 'メールCC
.Subject = M 'メール件名
.BodyFormat = 2 'メール形式設定
.HTMLBody = N 'メール本文
.Display
End With
'Unload Me
End Sub
Function htmlTest(strBody As String) As String
Dim strChk As String, strSet As String, strTmp As String
Dim i As Long
strTmp = ""
For i = 1 To Len(strBody) '文字数分ループ
strChk = Mid(strBody, i, 1)
If Asc(strChk) = &HA Then '改行
strSet = "</p><p>" '<br>変わり
Else
strSet = strChk
End If
strTmp = strTmp & strSet
Next i
htmlTest = "<html><body style=""line-height: 1em""><p>" & strTmp & "</p></style body></html>"
End Function
少し乱暴なFunctionです。
本来 HTMLへのエンコード変換は沢山あるので
IFでなくSelect Case などで条件分岐した方が良いと思います。また、Function内で
htmlTest = "<html><body style=""line-height: 1em""><p>" & strTmp & "</p></style body></html>"
のようなコードにすると汎用性がなくなり、良くないですが、サンプルで加工している部分を見分けるため書きました。
Asc 関数、ASCIIコードについては、お調べください。
No.2
- 回答日時:
.BodyFormaを変更すると書式が削除されてしまうので、改行も削除されます。
したがって、コードに改行を加える必要が発生します。HTMLで送信する必要が無ければ、通常テキストで使うのが良いと思いますよ。
本文をhtmlで書いている為、<br>タグや<p>タグを使って改行を加えます。<p>タグの方が良いかも
その為、htmlの知識が必要になると思います。さほど難しい事はしないと思うので、調べてみてはいかがでしょう。
また、Worksheets("メール内容").Cells(9, 2)のセル内にコード+本文を書いて.HTMLBody = N でも可能です。
なので、Cells(9, 2)のセル内の文字に対してVBAのReplaceや文字関数でhtml形式に書き換えるプロセスを入れのも良いかも知れません。
回答ありがとうございます。
下記のようなやり方しかわからなかったのです。。。。。
他に画期的なコードの組み方はあるでしょうか?
セル1つ1つを改行していくと
改行幅が大きくなってしまいました。
お手数かけますがご教授下さい。
Dim outlookObj As Outlook.Application
Dim mailObj As Outlook.MailItem
Set outlookObj = New Outlook.Application
Set mailObj = outlookObj.CreateItem(olMailItem)
M = Worksheets("メール内容").Cells(5, 2) '件名 選択
Dim N As String: N = ""
N = N & Worksheets("メール内容").Range("B9").Value & "<P>" '本文 選択
N = N & Worksheets("メール内容").Range("B10").Value & "<P>" '本文 選択
N = N & Worksheets("メール内容").Range("B11").Value & "<P>" '本文 選択
'メール送信内容の作成
With mailObj
.To = NN 'メール宛先
.CC = MM 'メールCC
.Subject = M 'メール件名
'.Body = N 'メール本文
.BodyFormat = olFormatHTML 'メール形式設定
.HTMLBody = "<html><body style=""line-height: 1em"">" & N & "</style body></html>"
.Display
End With
End Sub
No.1
- 回答日時:
こんな書き方で良ければ、
With mailObj
.To = NN 'メール宛先
.CC = MM 'メールCC
.Subject = M 'メール件名
'.Body = N 'メール本文
.BodyFormat = 2 'メール形式設定
.HTMLBody = "<html><body style=""line-height: 1em"">" & N & "</style body></html>"
.Display
End With
1em 1行分
回答ありがとうございます。
改行幅は直りました!!!
ありがとうございます!!!!
因みに元々は改行できていたのですが、上記コードだと改行しないのですが
何かわかりますでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) Excel・ユーザーフォームの情報を受け渡したい 4 2022/06/08 10:11
- Visual Basic(VBA) エクセル VBA メール本文に指定セルに記載されているURLをリンクとして記載する方法 8 2022/08/08 07:50
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
あなたにとってのゴールデンタイムはいつですか?
一週間の中でもっともテンションが上がる「ゴールデンタイム」はいつですか? その逆で、一週間でもっとも落ち込むタイミングでも構いません。 よかったら教えて下さい!
-
土曜の昼、学校帰りの昼メシの思い出
週休2日が当たり前の今では懐かしい思い出ですが、昔は土曜日も午前中まで学校や会社がある「半ドン」で、いつもよりちょっと早く家に帰って食べる昼ご飯が、なんだかちょっと特別に感じたものです。
-
2024年のうちにやっておきたいこと、ここで宣言しませんか?
2024年も残すところ50日を切りましたね。 ことしはどんな1年でしたか? 2024年のうちにやっておきたいこと、 よかったらここで宣言していってください!
-
とっておきの「まかない飯」を教えて下さい!
飲食店で働く方だけが食べられる、とっておきの「まかない飯」。 働いてらっしゃる方がSNSなどにアップしているのを見ると、表のメニューには出てこない秘密感もあって、「食べたい!!」と毎回思ってしまいます。
-
VBAのフォント変更(エクセルからoutlookのメール作成において)
Visual Basic(VBA)
-
VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本
Visual Basic(VBA)
-
エクセルVBAでOutlookメールの書式を変える
Excel(エクセル)
-
-
4
Outlook 改行すると行間が開く
Yahoo!メール
-
5
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
6
VBA 半角スペースを入れるには...
その他(Microsoft Office)
-
7
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
8
VBA エクセル メール送信 ハイパーリンクの貼り方
その他(Microsoft Office)
-
9
Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを
Visual Basic(VBA)
-
10
アウトルックが起動しているかどうかを取得するには?
Visual Basic(VBA)
-
11
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
12
outlook文字色付け/マーカーのVBAコード
その他(Microsoft Office)
-
13
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
14
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
15
Excel VBA メール作成について Excelで作った表を写真のハイパーリンクの後に 図形にして
Visual Basic(VBA)
-
16
Excel VBA メール作成について Excel D7セルをOutlookの本文(HTML)にしま
Visual Basic(VBA)
-
17
DATE型変数を初期化する方法
Visual Basic(VBA)
-
18
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
19
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
20
outlook 文字を揃えたい。tabでやっても揃わない。
Word(ワード)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
受信メールの添付ファイル忘れ...
-
お祝い金を徴収するメールの書き方
-
一度聞いたかも知れないのをっ...
-
送信エラーの際、CCには届い...
-
"***@***.ocn.ne.jp"の"@***"は...
-
メール送信すると以下のような...
-
通帳口座番号 メールで送っても...
-
メールの一斉送信で非対象者に...
-
失礼な文とは分からず、先生に...
-
相手にメールを送信したら、 Ea...
-
送信しても『Mail System Error...
-
Winmail.dat ファイルが開けない
-
自分のアドレスにCCを送信す...
-
iphoneからメールで写真を送付...
-
エクセルを更新したらメールが...
-
PCでThunderbirdのメールを使っ...
-
メールの“不達通知” 英語が読め...
-
今日朝に、誰かと間違ってメー...
-
訳せる方お願いします!!
-
メールの最後に「それでは失礼...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
受信メールの添付ファイル忘れ...
-
お祝い金を徴収するメールの書き方
-
一度聞いたかも知れないのをっ...
-
詐欺メールでしょうか?
-
送信エラーの際、CCには届い...
-
メール送信すると以下のような...
-
送信しても『Mail System Error...
-
失礼な文とは分からず、先生に...
-
通帳口座番号 メールで送っても...
-
"***@***.ocn.ne.jp"の"@***"は...
-
株式会社NSCと言う所から、現金...
-
今日朝に、誰かと間違ってメー...
-
iphoneからメールで写真を送付...
-
メールの一斉送信で非対象者に...
-
メールの“不達通知” 英語が読め...
-
URLをコピーしてメールにリ...
-
メールの最後に「それでは失礼...
-
Winmail.dat ファイルが開けない
-
訳せる方お願いします!!
-
PCでThunderbirdのメールを使っ...
おすすめ情報