Excel (VBA)

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

 
(Windows 10 Pro : Microsoft 365)
Excel のデータをメールの本文に貼り付けて送信したい
投稿日時: 22/12/16 09:46:21
投稿者: takatada72

お世話になります。
 
現在、主記の件のようにメールの本文にExcelのデータを貼り付けて送信をしております。
ただ、送信前に、本文の修正を都度行っているため、なんとかしたく投稿させて頂きました。
※VBAの理解が浅く、ネットでコードを探して完成させているレベルになります。
 
こちらを実行すると、 bodyStr2の方の署名が記載されませんでした。
どこをどのように修正すれば可能になりますでしょうか
 
お忙しいとは思いますが宜しくお願い致します。
 
本文上メッセージ
 
Excel データ
 
署名は、記載されません。

 
☆★☆★☆★☆★☆★☆★☆★☆★★☆☆★☆★☆★☆★☆★☆★☆★☆★☆
'--- 参照設定ありの場合 ---'
Dim objOutlook As Outlook.Application
Set objOutlook = New Outlook.Application
Dim objMail As Outlook.MailItem
Set objMail = objOutlook.CreateItem(olMailItem)
 
 
'--- メールの内容を格納する変数 ---'
Dim toStr As String
Dim ccStr As String
Dim bccStr As String
Dim subjectStr As String
Dim bodyStr As String
 
'--- 宛先の内容 ---'
toStr = "testTO@test.com"
ccStr = "testCC@test.com"
 
'--- 件名の内容 ---'
subjectStr = "【更新】設計審査報告書の発行 " & Date & " 付DR更新分" '件名
 
'--- 本文の内容 ---'
 
 'メール本文
    bodyStr = bodyStr + "お疲れ様です、品管の岸本です。" & Chr(13) & Chr(10)
    bodyStr = bodyStr & Chr(13) & Chr(10)
    bodyStr = bodyStr + "下記のデータを修正しましたのでご確認頂けますでしょうか" & Chr(13) & Chr(10)
    bodyStr = bodyStr & Chr(13) & Chr(10)
     
    bodyStr2 = bodyStr2 & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 + "以上、よろしくお願いします。" & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & "■□■□■□■□■□■□■□■□■□■□■□■□" & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & "会社名" & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & "テスト事業本部 " & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & "データ配信係" & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & "■□■□■□■□■□■□■□■□■□■□■□■□" & Chr(13) & Chr(10)
bodyStr1 = bodyStr '& Chr(13) & Chr(10) & bodyStr2
 
 
'--- 条件を設定 ---'
objMail.To = toStr
objMail.CC = ccStr
objMail.Subject = subjectStr
objMail.Body = bodyStr1
 
 
'--- メールを表示 ---'
objMail.Display
 
 
'--- Excelワークシート ---'
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Data")
 
'--- 貼り付ける表の範囲(A1:H10のような文字列) ---'
Dim tableAddress As String
tableAddress = "A1:G7"
 
 
'--- メール本文に表を貼り付け ---'
Call ws.Range(tableAddress).Copy
objMail.GetInspector().WordEditor.Windows(1).Selection.EndKey Unit:=6, Extend:=0
objMail.GetInspector().WordEditor.Windows(1).Selection.Paste

回答
投稿日時: 22/12/16 10:42:33
投稿者: taitani
投稿者のウェブサイトに移動

bodyStr1 = bodyStr '& Chr(13) & Chr(10) & bodyStr2
 
こうなっているからでは?
 

bodyStr1 = bodyStr & Chr(13) & Chr(10) & bodyStr2
 
に修正ではいかがですか?

投稿日時: 22/12/16 11:00:58
投稿者: takatada72

taitaniさん
 
早速、ご指摘をありがとうございます。
色々と検証していたなごりですみません。
 
'を解除した場合、下記のようになってしまいます。
 
メッセージ(bodyStr1 & bodyStr2)
 
最後、Excel データが貼り付けられる
 
 
やりたいことは、
 
メッセージ(bodyStr1)
 
最後、Excel データが貼り付けられる
 
メッセージ(bodyStr2)
 
 
お忙しいとは思いますが宜しくお願い致します。

回答
投稿日時: 22/12/16 11:17:01
投稿者: taitani
投稿者のウェブサイトに移動

引用:
本文上メッセージ
  
Excel データ
  
署名は、記載されません。

 
こういう形式だったんですね。
 
それであれば、以下のページが参考になると思います。
 
http://extan.jp/?p=6692
 
改修してみてください。

投稿日時: 22/12/16 12:14:28
投稿者: takatada72

taitaniさん
 
参考URLをありがとうございました。
確認して、頑張りたいと思います。
 
つまづいた時も宜しくお願い致します。

回答
投稿日時: 22/12/16 14:31:59
投稿者: taitani
投稿者のウェブサイトに移動

修正してみました。
※動作確認済み。
’---------------------

Sub Send_Mail()
    '--- 参照設定ありの場合 ---'
    Dim objOutlook As Outlook.Application
    Set objOutlook = New Outlook.Application
    Dim objMail As Outlook.MailItem
    Set objMail = objOutlook.CreateItem(olMailItem)
    
    Dim objTableRG As Range
    Dim objWRG As Word.Range
    Dim strPastePos As String
    '参照設定で、Microsoft Word **.* Object Library にチェック必要
    strPastePos = "<表挿入位置>"
     
    '--- メールの内容を格納する変数 ---'
    Dim toStr As String
    Dim ccStr As String
    Dim bccStr As String
    Dim subjectStr As String
    Dim bodyStr As String
    Dim bodyStr1 As String
    Dim bodyStr2 As String
     
    '--- 宛先の内容 ---'
    toStr = "testTO@test.com"
    ccStr = "testCC@test.com"
     
    '--- 件名の内容 ---'
    subjectStr = "【更新】設計審査報告書の発行 " & Date & " 付DR更新分" '件名
     
    '--- 本文の内容 ---'
     
     'メール本文
    bodyStr = bodyStr + "お疲れ様です、品管の岸本です。" & Chr(13) & Chr(10)
    bodyStr = bodyStr & Chr(13) & Chr(10)
    bodyStr = bodyStr + "下記のデータを修正しましたのでご確認頂けますでしょうか" & Chr(13) & Chr(10)
    bodyStr = bodyStr & Chr(13) & Chr(10)
     
    bodyStr2 = bodyStr2 & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 + "以上、よろしくお願いします。" & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & "■□■□■□■□■□■□■□■□■□■□■□■□" & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & "会社名" & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & "テスト事業本部 " & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & "データ配信係" & Chr(13) & Chr(10)
    bodyStr2 = bodyStr2 & "■□■□■□■□■□■□■□■□■□■□■□■□" & Chr(13) & Chr(10)
    bodyStr1 = bodyStr & Chr(13) & Chr(10) & "<表挿入位置>" & bodyStr2
    
     
    '--- 条件を設定 ---'
    objMail.To = toStr
    objMail.cc = ccStr
    objMail.Subject = subjectStr
    objMail.Body = bodyStr1
    objMail.BodyFormat = 3 ' 「3」の場合リッチテキスト型となります。「1」はテキスト型、「2」は HTML型となります。
        
    '--- Excelワークシート ---'
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Data")
     
    '--- 貼り付ける表の範囲(A1:H10のような文字列) ---'
    Dim tableAddress As String
    tableAddress = "A1:G7"
     
     
    '--- メール本文に表を貼り付け ---'
    Call ws.Range(tableAddress).Copy
    objMail.GetInspector().WordEditor.Windows(1).Selection.EndKey Unit:=6, Extend:=0
    Set objWRG = objMail.GetInspector.WordEditor.Range(0, 0)
    objWRG.Find.Text = strPastePos
    objWRG.Find.Execute
    objWRG.Paste
    
    '--- メールを表示 ---'
    objMail.Display
    
End Sub

投稿日時: 22/12/16 16:23:14
投稿者: takatada72

taitaniさん
 
修正もして頂きましてありがとうございました。
ご案内されたURLを試してみたのですが、VBAを理解していない
私にとって敷居が高かったです。
 
修正して頂いた内容を確認しながら、調整したいと思います。
 
ありがとうございました。