Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2013)
メールの本文に下線
投稿日時: 21/08/19 15:27:11
投稿者: ffftp

こんにちは ffftpです
 
エクセルでメールを送信したいと思い以下のコードまでは作ることができました。
    Set objOutlook = New Outlook.Application
    Set objMail = objOutlook.CreateItem(olMailItem)
     
    objMail.To = "admin"
    objMail.Subject = "入金連絡"
    objMail.BodyFormat = olFormatPlain
    objMail.Body = "振込金額  " & Cells(MyRow, 11) & vbLf & _
                   "振込手数料 " & Cells(MyRow, 12) & vbLf & _
                   " 合 計  " & Cells(MyRow, 20)
 
本文の振込手数料と合計の間に2重の下線を入れたいのです。
本文をHTML形式にしたりなど、色々と試行錯誤してみましたが、自分の力では限界です。
お力をお貸しください。

回答
投稿日時: 21/08/19 17:09:19
投稿者: taitani

「本文をHTML形式」ということなので、Tag で記載を行えばよいと思います。
以下のページが参考になると思います。
https://ja.extendoffice.com/documents/excel/5030-excel-vba-send-email-format-bold-text.html

投稿日時: 21/08/20 07:56:43
投稿者: ffftp

taitani様 ありがとうございます。
 
HTMLのタグがVBAでそのまま使えることを知りました。
ありがとうございます。
 
自分の知識がないので可能かどうか教えていただきたいです。
BodyFormatがolFormatHTMLの時は下線が引けることがわかりました。
BodyFormatがolFormatplainの時は下線はひけるのでしょうか?
 
引き続きお力をお貸しください。
宜しくお願いいたします。

回答
投稿日時: 21/08/20 08:26:30
投稿者: simple

こんにちは。
 
セルの下罫線のようなものを言っているならそれはできませんね。
 

振込金額   10,000円
振込手数料    200円
----------------------
 合 計   10,200円
という方式ではダメなんですか?(塗りつぶしは除く)
 
その他、リッチテキスト形式というものがあり、
Excelの表をコピーして、そこに表として貼り付けることもできるでしょう。(下記(2))
 
(1)
元データは一行完結型のデータのようなので、
・体裁を整えたテンプレート表を作って、そこに値を入れ、
・その表をoutlookの本文に転記
という作業をループで実行すればよいのかもしれません。
 
Outlook関連のマクロは、↓のサイトが参考になるでしょう。(大抵の用が足りると思われます)
https://outlooklab.wordpress.com/outlook-macroscript-index/#newinspector
 
この件では、例えば、
「Excel のデータを Outlook の本文に表としてコピーするマクロ」
https://outlooklab.wordpress.com/2019/09/07/excel-%e3%81%ae%e3%83%87%e3%83%bc%e3%82%bf%e3%82%92-outlook-%e3%81%ae%e6%9c%ac%e6%96%87%e3%81%ab%e8%a1%a8%e3%81%a8%e3%81%97%e3%81%a6%e3%82%b3%e3%83%94%e3%83%bc%e3%81%99%e3%82%8b%e3%83%9e%e3%82%af/
が参考になるかもしれません。(リッチテキスト形式の利用方法に関して)
 
(2)
上記ではWordの表に相当するものを直接操作していますが、
Excelのセル範囲をコピーして、
"リッチテキスト(RTF)形式"として貼り付けるという方式もあると思います。
コードで言うと、(上記(1)のコードを前提としています)
   Set wrdRange = wrdEditor.Application.Selection.Range
   Worksheets("Sheet1").Range("F2:G4").Copy        'セル範囲は仮置き
   wrdRange.PasteExcelTable False, False, True
という感じです。たぶん、こちらのほうが簡単でしょう。
ご自分でトライしてみてください。
(作成依頼はここでは余り歓迎されません。
  トライして詰まったところを具体的にまた質問してみてください。)
 
(3)
なお、蛇足ですが、
私でしたら、==============を挿入したplainテキストで満足するかも。
メールは、plainテキストが歓迎されるようですし、
本文であれば、余り凝ったものは受取側も困ると思います。
形式が整った詳細なものが必要なら、むしろファイルを添付するのが普通でしょう。
また、plainテキストなら作成が容易な点が大きいでしょう。
 
# なお、この質問は内容からしても、
# Outlookの板に質問するのが適切だったかもしれませんね。
# 次回はご一考ください。

投稿日時: 21/08/20 08:59:37
投稿者: ffftp

Simple様 ありがとうございます。
 
olFormatplainで必ず下線を引かなくてはならないと思い頭が凝り固まっておりました。
⑶のように2重線を入力するという考えに行きつきませんでした。
メールを受け取る側からしてもその方法で何も問題がないように思われたのでその方法を
採用させていただき作成させていただきました。
 
ご教授いただいた⑴及び⑵の方法は自分の引き出しを増やしたいので、
じっくりと解析しながら理解製作していきたいと思います。
 
⑴及び⑵の点で理解の及ばないことがございましたら、
Simple様の仰る通りOutlookの板に質問するのが正しいと思いますので
OUTLOOKの板に投稿させていただきます。
 
色々とお力添えいただいたおかげで疑問が晴れました。
今後ともよろしくお願いいたします。
 
本当にありがとうございました。
 
 
 

simple さんの引用:
こんにちは。
 
セルの下罫線のようなものを言っているならそれはできませんね。
 
振込金額   10,000円
振込手数料    200円
----------------------
 合 計   10,200円
という方式ではダメなんですか?(塗りつぶしは除く)
 
その他、リッチテキスト形式というものがあり、
Excelの表をコピーして、そこに表として貼り付けることもできるでしょう。(下記(2))
 
(1)
元データは一行完結型のデータのようなので、
・体裁を整えたテンプレート表を作って、そこに値を入れ、
・その表をoutlookの本文に転記
という作業をループで実行すればよいのかもしれません。
 
Outlook関連のマクロは、↓のサイトが参考になるでしょう。(大抵の用が足りると思われます)
https://outlooklab.wordpress.com/outlook-macroscript-index/#newinspector
 
この件では、例えば、
「Excel のデータを Outlook の本文に表としてコピーするマクロ」
https://outlooklab.wordpress.com/2019/09/07/excel-%e3%81%ae%e3%83%87%e3%83%bc%e3%82%bf%e3%82%92-outlook-%e3%81%ae%e6%9c%ac%e6%96%87%e3%81%ab%e8%a1%a8%e3%81%a8%e3%81%97%e3%81%a6%e3%82%b3%e3%83%94%e3%83%bc%e3%81%99%e3%82%8b%e3%83%9e%e3%82%af/
が参考になるかもしれません。(リッチテキスト形式の利用方法に関して)
 
(2)
上記ではWordの表に相当するものを直接操作していますが、
Excelのセル範囲をコピーして、
"リッチテキスト(RTF)形式"として貼り付けるという方式もあると思います。
コードで言うと、(上記(1)のコードを前提としています)
   Set wrdRange = wrdEditor.Application.Selection.Range
   Worksheets("Sheet1").Range("F2:G4").Copy        'セル範囲は仮置き
   wrdRange.PasteExcelTable False, False, True
という感じです。たぶん、こちらのほうが簡単でしょう。
ご自分でトライしてみてください。
(作成依頼はここでは余り歓迎されません。
  トライして詰まったところを具体的にまた質問してみてください。)
 
(3)
なお、蛇足ですが、
私でしたら、==============を挿入したplainテキストで満足するかも。
メールは、plainテキストが歓迎されるようですし、
本文であれば、余り凝ったものは受取側も困ると思います。
形式が整った詳細なものが必要なら、むしろファイルを添付するのが普通でしょう。
また、plainテキストなら作成が容易な点が大きいでしょう。
 
# なお、この質問は内容からしても、
# Outlookの板に質問するのが適切だったかもしれませんね。
# 次回はご一考ください。