Excel VBA 質問スレッド №1453 (解決済)

メール本文にExcel表を図として貼り付け

投稿者 : 初心者KM     投稿日時 : 2023/06/14(Wed) 20:09:36     OS : Windows 10     EXCEL : Excel 2019
Excel VBA メール(outlook)作成について
本文の中にExcel でコピーした表を上下に2つ
図として貼り付けをしたいです。

Range("D7")セル
(本文)<br><br>
【PT1】<br><br>
【PT2】

【PT1】【PT2】をそれぞれ図に置き換えたところ、
それぞれの位置に上手く置き換えができず、【PT1】の位置に【PT2】の図だけが貼り付けされていました。

詳しい方教えて頂けると幸いです。
宜しくお願い致します。

Sub メール作成
Dim outlookObj As Outlook.Application
  Set outlookObj = New Outlook.Application
 
  Dim mailObj As Outlook.MailItem
  Set mailObj = outlookObj.CreateItem(olMailItem)
 
  mailObj.Display
 
  Worksheets("リスト").Activate
 
  Dim mailBody As String
  mailBody = CreatemailBody
 
  With mailObj
    .To = Range("D5")
    .CC = Range("D6")
    .Subject = Range("D4")
    .HTMLBody = mailBody
  End With
 
    Dim objWRG As Word.Range
    Set objWRG = mailObj.GetInspector.WordEditor.Range(0, 0)
    With objWRG
        Worksheets("1").Range("A1:Z30").CopyPicture
        .Find.Text = "【PT1】"
        .Find.Execute
        .PasteSpecial
        .ShapeRange.Width = 900#
      Worksheets("2").Range("A3:AZ28").CopyPicture
        .Find.Text = "【PT2】"
        .Find.Execute
        .PasteSpecial
        .ShapeRange.Width = 900#
    End With
 
End Sub
 
Function CreatemailBody() As String
 
    Dim Body As String
    Dim Day As String
 
    Body = Range("D7")
    Body = Replace(Body, "【月】", Day)
    CreatemailBody = Body
 
End Function

スポンサーリンク
[返信 1] Re : メール本文にExcel表を図として貼り付け
投稿者 : さんこう     投稿日時 : 2023/06/15(Thu) 08:30:36
>【PT1】の位置に【PT2】の図だけが貼り付けされ

Outlookを使っていないのでよくわかりませんが、

マイクロソフトのドキュメント↓に、
https://learn.microsoft.com/ja-jp/office/vba/api/word.find

「Range オブジェクトから Find オブジェクトを取得した場合、検索条件と一致する文字列が見つかっても選択範囲は変更されませんが、Range オブジェクトが再定義されます。」

とありますので、【PT1】を見つけた時点で「objWRG」が変更されてしまうようです。

【PT2】を検索する前に、もう一度「Set objWRG = ・・・」を実行してみてはいかがでしょうか。

[返信 2] Re : メール本文にExcel表を図として貼り付け
投稿者 : 初心者km     投稿日時 : 2023/06/19(Mon) 08:11:28
■[返信 1] さんこうさん(2023-06-15 08:30:36)の記事
> >【PT1】の位置に【PT2】の図だけが貼り付けされ

> Outlookを使っていないのでよくわかりませんが、

> マイクロソフトのドキュメント↓に、
> https://learn.microsoft.com/ja-jp/office/vba/api/word.find

> 「Range オブジェクトから Find オブジェクトを取得した場合、検索条件と一致する文字列が見つかっても選択範囲は変更されませんが、Range オブジェクトが再定義されます。」

> とありますので、【PT1】を見つけた時点で「objWRG」が変更されてしまうようです。

> 【PT2】を検索する前に、もう一度「Set objWRG = ・・・」を実行してみてはいかがでしょうか。


解決しました。ありがとうございます。
objWRG変更されてしまうんですね。
助かりましたm(_ _)m

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-07-18 03:48:32 )
タイトルとURLをコピーしました