
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も見ています
-
好きな人を振り向かせるためにしたこと
大好きな人と会話のきっかけを少しでも作りたい、意識してもらいたい…! 振り向かせるためにどんなことをしたことがありますか?
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
コンビニでおにぎりを買うときのスタメンはどの具?
コンビニでおにぎりを買うとき、何の具材を選ぶことが多いですか?
-
あなたの人生で一番ピンチに陥った瞬間は?
これまでの人生で今振り返ると「あの時、1番ピンチだったなぁ...」という瞬間はありますか?
-
思い出すきっかけは 音楽?におい?景色?
記憶をふと思い出すきっかけは 音楽、におい、景色 どれですか?
-
VBAのフォント変更(エクセルからoutlookのメール作成において)
Visual Basic(VBA)
-
エクセルVBAでOutlookメールの書式を変える
Excel(エクセル)
-
Outlook 改行すると行間が開く
Yahoo!メール
-
-
4
Excel VBA メール作成について Excel D7セルをOutlookの本文(HTML)にしま
Visual Basic(VBA)
-
5
VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本
Visual Basic(VBA)
-
6
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
7
マクロ初心者です。 マクロで範囲選択したセルをOutlookのメールの本文に貼り付けたいのですがなか
Visual Basic(VBA)
-
8
Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを
Visual Basic(VBA)
-
9
VBA エクセル メール送信 ハイパーリンクの貼り方
その他(Microsoft Office)
-
10
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
11
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
12
outlook文字色付け/マーカーのVBAコード
その他(Microsoft Office)
-
13
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
14
Outlookのメールを送信するマクロ
Word(ワード)
-
15
アウトルックが起動しているかどうかを取得するには?
Visual Basic(VBA)
-
16
ExcelVBAでPDFを閉じるソース
その他(Microsoft Office)
-
17
エクセルVBAのフォームを最前面にする方法を教えてください。
Visual Basic(VBA)
-
18
VBA 半角スペースを入れるには...
その他(Microsoft Office)
-
19
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
20
outlookでメール作成するときの書式設定について
Windows 10
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
受信メールの添付ファイル忘れ...
-
お祝い金を徴収するメールの書き方
-
一度聞いたかも知れないのをっ...
-
送信エラーの際、CCには届い...
-
通帳口座番号 メールで送っても...
-
メールの一斉送信で非対象者に...
-
PCでThunderbirdのメールを使っ...
-
メールの最後に「それでは失礼...
-
メールの書き方 保護者から先生へ
-
メール送信すると以下のような...
-
"***@***.ocn.ne.jp"の"@***"は...
-
iphoneからメールで写真を送付...
-
送信しても『Mail System Error...
-
空メールって何も書かなくてい...
-
Winmail.dat ファイルが開けない
-
相手にメールを送信したら、 Ea...
-
エクセルを更新したらメールが...
-
訳せる方お願いします!!
-
お客様宛のメールで、返信がほ...
-
自分のアドレスにCCを送信す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
受信メールの添付ファイル忘れ...
-
一度聞いたかも知れないのをっ...
-
お祝い金を徴収するメールの書き方
-
通帳口座番号 メールで送っても...
-
送信エラーの際、CCには届い...
-
メールの一斉送信で非対象者に...
-
メールの書き方 保護者から先生へ
-
失礼な文とは分からず、先生に...
-
Winmail.dat ファイルが開けない
-
メール送信すると以下のような...
-
iphoneからメールで写真を送付...
-
PCでThunderbirdのメールを使っ...
-
URLをコピーしてメールにリ...
-
送信しても『Mail System Error...
-
"***@***.ocn.ne.jp"の"@***"は...
-
お客様宛のメールで、返信がほ...
-
空メールって何も書かなくてい...
-
メールの最後に「それでは失礼...
-
相手にメールを送信したら、 Ea...
-
エクセルを更新したらメールが...
おすすめ情報