![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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)
-
Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを
Visual Basic(VBA)
-
エクセルVBAでOutlookメールの書式を変える
Excel(エクセル)
-
-
4
Outlook 改行すると行間が開く
Yahoo!メール
-
5
マクロ(段落のptを行に)
Word(ワード)
-
6
VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本
Visual Basic(VBA)
-
7
Excel VBA メール作成について Excelで作った表を写真のハイパーリンクの後に 図形にして
Visual Basic(VBA)
-
8
VBA エクセル メール送信 ハイパーリンクの貼り方
その他(Microsoft Office)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
11
VBA 半角スペースを入れるには...
その他(Microsoft Office)
-
12
アウトルックが起動しているかどうかを取得するには?
Visual Basic(VBA)
-
13
VBAでメール作成(選択した複数の宛先へのメール作成) ExcelのVBAを使用してOutlookの
Excel(エクセル)
-
14
VBAでOutlookを終了させたい ExcelVBAで既に起動されているOutlookを終了させる
Visual Basic(VBA)
-
15
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
16
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
17
ExcelVBAでOutlookにセル内容を送る
その他(プログラミング・Web制作)
-
18
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
19
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
20
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
受信メールの添付ファイル忘れ...
-
お祝い金を徴収するメールの書き方
-
送信エラーの際、CCには届い...
-
一度聞いたかも知れないのをっ...
-
メール送信すると以下のような...
-
失礼な文とは分からず、先生に...
-
windowsメールとOutlookメール...
-
Winmail.dat ファイルが開けない
-
URLをコピーしてメールにリ...
-
"***@***.ocn.ne.jp"の"@***"は...
-
相手にメールを送信したら、 Ea...
-
通帳口座番号 メールで送っても...
-
添付ファイルhtm 何でしょう?
-
既婚者の異性とメールするのは...
-
同じメールを2通ずつ受信して...
-
送信しても『Mail System Error...
-
怪しいメールが届きましたがど...
-
iphoneからメールで写真を送付...
-
メールの書き方 保護者から先生へ
-
訳せる方お願いします!!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
受信メールの添付ファイル忘れ...
-
お祝い金を徴収するメールの書き方
-
OUTLOOK2016(「メッセージが変...
-
失礼な文とは分からず、先生に...
-
送信エラーの際、CCには届い...
-
株式会社NSCと言う所から、現金...
-
一度聞いたかも知れないのをっ...
-
URLをコピーしてメールにリ...
-
通帳口座番号 メールで送っても...
-
windowsメールとOutlookメール...
-
"***@***.ocn.ne.jp"の"@***"は...
-
Winmail.dat ファイルが開けない
-
メール送信すると以下のような...
-
送信しても『Mail System Error...
-
訳せる方お願いします!!
-
相手にメールを送信したら、 Ea...
-
メールの書き方 保護者から先生へ
-
詐欺メールでしょうか?
-
iphoneからメールで写真を送付...
-
メールの一斉送信で非対象者に...
おすすめ情報