三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

Outlook VBA 図を含んだ返信メール作成 .WordEditorで編集 .Paragraphs段落を使ってみた

知恵袋の質問に答えてみた。:
detail.chiebukuro.yahoo.co.jp

下記のようなoutlookvbaでメール返信をしたいのですが、埋め込み図形がそのまま反映してくれません。何か方法はありませんか?
Dim objReItem As Outlook.MailItem
Set objReItem = ActiveInspector.CurrentItem.ReplyAll
objReItem.Recipients.ResolveAll
objReItem.Display
Set objReItem = Nothing

に答えてみた。

図を含んだ返信メールを作成したかったので、
GetInspector().WordEditor の編集で、
段落Paragraphsを使いました。
と言っても、
.Paragraphs(1).Range.Text で冒頭一段落目に決め打ちでセットしただけでした。

下記、いつもの あのあの、そのその、説明動画です・・・
youtu.be
https://youtu.be/h5BiIk5m2SY
目次
00:00 挨拶、やりたいこと
01:30 .WordEditorとParagraphsを使う
03:10 デバッグとテスト実行
05:25 body本文のテスト
07:35 蛇足で末尾に追加 .Countで段落数

段落(行)を一行増やしてから、返信文をセット

単純に、返信の1段落目に用意したBody返信文をセット

Option Explicit

Sub test20220808メール返信テスト()

    Dim objReItem As Outlook.MailItem
    '現在表示中のメールから返信メールを作成する
    Set objReItem = ActiveInspector.CurrentItem.ReplyAll
    objReItem.Recipients.ResolveAll
    objReItem.Display

    '↑で作成した返信メールを編集する
    Dim objDOC As Object
    Set objDOC = objReItem.GetInspector().WordEditor
    '↑.WordEditorであとは、Wordの世界っぽく処理
  
    '一段落目に定型返信文をセットしたい
    '段落(1)段落目をバカっぽく増やす
    objDOC.Paragraphs(1).Range.Text = vbCrLf & objDOC.Paragraphs(1).Range.Text
    '段落1に↑ 改行vbcrlf + 段落1 で改行を作り、その作られた(1)に返信をセット
    objDOC.Paragraphs(1).Range.Text = "返信定型文・・・" & vbCrLf & "あいう"
    
    Set objReItem = Nothing

End Sub

strBODYなど、セットしたい返信文が変数に入っていると思うので、
objDOC.Paragraphs(1).Range.Text = strBODY
みたいにして、アレンジして使ってみてください。

Word+VBA+Paragraphs などで検索すると、段落の例が出てくると思うので探ってみてください。

少し前に書いた手前みそサンプルですが、
ken3memo.hatenablog.com
と隙あれば自分語りをすると怒られそうですが、
解決のヒントとなれば幸いです。

#OutlookVBA #VBA #マクロ #メール返信 #Paragraphs


蛇足:末尾に定型文を追加したい時は、
x = objDOC.Paragraphs.Count
で、段落数がわかるので、
objDOC.Paragraphs(x).Range.Text = objDOC.Paragraphs(x).Range.Text & vbCrLf
で一つ増やしてから
'段落1に↑ 改行vbcrlf + 段落1 で改行を作り、その作られた(x+1)に返信をセット
objDOC.Paragraphs(x + 1).Range.Text = "返信定型文・・・" & vbCrLf & "あいう"

Option Explicit

Sub test20220808メール返信テスト()

    Dim objReItem As Outlook.MailItem
    '現在表示中のメールから返信メールを作成する
    Set objReItem = ActiveInspector.CurrentItem.ReplyAll
    objReItem.Recipients.ResolveAll
    objReItem.Display

    '↑で作成した返信メールを編集する
    Dim objDOC As Object
    Set objDOC = objReItem.GetInspector().WordEditor
    '↑.WordEditorであとは、Wordの世界っぽく処理

    '一段落目に定型返信文をセットしたい
    '段落(1)段落目をバカっぽく増やす
    objDOC.Paragraphs(1).Range.Text = vbCrLf & objDOC.Paragraphs(1).Range.Text
    '段落1に↑ 改行vbcrlf + 段落1 で改行を作り、その作られた(1)に返信をセット
    objDOC.Paragraphs(1).Range.Text = "返信定型文・・・" & vbCrLf & "あいう"
    
    '末尾に追加なら
    Dim x As Integer
    x = objDOC.Paragraphs.Count
    objDOC.Paragraphs(x).Range.Text = objDOC.Paragraphs(x).Range.Text & vbCrLf
    
    '段落1に↑ 改行vbcrlf + 段落1 で改行を作り、その作られた(x+1)に返信をセット
    objDOC.Paragraphs(x + 1).Range.Text = "返信定型文・・・" & vbCrLf & "あいう"
    
    Set objReItem = Nothing

End Sub

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。
・[Excel/Access VBA]の解説
・[ASP(Active Server Pages)]の解説。
・[元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
・[プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
三流君を踏み台にする
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)