
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も見ています
-
VBAのフォント変更(エクセルからoutlookのメール作成において)
Visual Basic(VBA)
-
VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本
Visual Basic(VBA)
-
Outlook 改行すると行間が開く
Yahoo!メール
-
-
4
エクセルVBAでOutlookメールの書式を変える
Excel(エクセル)
-
5
Excel VBA メール作成について Excel D7セルをOutlookの本文(HTML)にしま
Visual Basic(VBA)
-
6
Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを
Visual Basic(VBA)
-
7
マクロ初心者です。 マクロで範囲選択したセルをOutlookのメールの本文に貼り付けたいのですがなか
Visual Basic(VBA)
-
8
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
9
エクセルVBAでアウトルックメールの差出人変更
Excel(エクセル)
-
10
アウトルックが起動しているかどうかを取得するには?
Visual Basic(VBA)
-
11
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
12
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
13
VBAでCSVファイルが使用中かどうかの確認
Visual Basic(VBA)
-
14
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
15
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
16
VBAでメモ帳にコピペをしたいのですが…
PowerPoint(パワーポイント)
-
17
VBA エクセル メール送信 ハイパーリンクの貼り方
その他(Microsoft Office)
-
18
ExcelVBAでOutlookにセル内容を送る
その他(プログラミング・Web制作)
-
19
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
20
outlook文字色付け/マーカーのVBAコード
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
受信メールの添付ファイル忘れ...
-
一度聞いたかも知れないのをっ...
-
通帳口座番号 メールで送っても...
-
メールの書き方 保護者から先生へ
-
送信エラーの際、CCには届い...
-
メール送信すると以下のような...
-
失礼な文とは分からず、先生に...
-
お祝い金を徴収するメールの書き方
-
報告メールを送る女性の心理
-
メールの一斉送信で非対象者に...
-
PCでThunderbirdのメールを使っ...
-
"***@***.ocn.ne.jp"の"@***"は...
-
相手にメールを送信したら、 Ea...
-
土日に大学教授にメールを送る...
-
送信しても『Mail System Error...
-
大学の先生からのメールに、夜...
-
エクセルを更新したらメールが...
-
Winmail.dat ファイルが開けない
-
iphoneからメールで写真を送付...
-
自分のアドレスにCCを送信す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
受信メールの添付ファイル忘れ...
-
お祝い金を徴収するメールの書き方
-
一度聞いたかも知れないのをっ...
-
通帳口座番号 メールで送っても...
-
送信エラーの際、CCには届い...
-
メールの一斉送信で非対象者に...
-
メール送信すると以下のような...
-
メールの書き方 保護者から先生へ
-
"***@***.ocn.ne.jp"の"@***"は...
-
報告メールを送る女性の心理
-
送信しても『Mail System Error...
-
PCでThunderbirdのメールを使っ...
-
Winmail.dat ファイルが開けない
-
相手にメールを送信したら、 Ea...
-
メールの“不達通知” 英語が読め...
-
自分のアドレスにCCを送信す...
-
空メールって何も書かなくてい...
-
一つのメールアドレスで色んな...
-
メールの最後に「それでは失礼...
-
お客様宛のメールで、返信がほ...
おすすめ情報