[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『EXCEL VBAメール送信』(kj)
EXCEL VBAにて、outlookのメール本文に表を差し込みたいです。
以下のmailBody2(B14からC24)が表となりますが、<13:型が一致しません>と mailItemObj.Body = mailBody & vbCrLf & vbCrLf & mailBody2 & creditの箇所でエラーとなってしまいます。対処方法もしくは代替案をお教えいただけますでしょうか。
'outlookを起動する Dim toaddress, ccaddress, bccaddress As String '変数設定:To宛先、cc宛先、bcc宛先 Dim subject, mailBody, mailBody2, credit As String '変数設定:件名、メール本文、クレジット、添付 Dim outlookObj As Outlook.Application 'Outlookで使用するオブジェクト生成 Dim mailItemObj As Outlook.MailItem 'Outlookで使用するオブジェクト生成
'差出人、本文、署名を取得する--- toaddress = Range("B10").Value 'To宛先 ccaddress = Range("B11").Value 'Cc宛先 subject = Range("B12").Value '件名 mailBody = Range("B13").Value '本文 mailBody2 = Range("B14:C24") '本文2 credit = Range("B25").Value 'クレジット
'メールを作成して、差出人、本文、署名を入れ込む---
Set outlookObj = CreateObject("Outlook.Application") Set mailItemObj = outlookObj.CreateItem(olMailItem)
mailItemObj.BodyFormat = 3 'リッチテキストに変更 mailItemObj.To = toaddress 'to宛先をセット mailItemObj.CC = ccaddress 'ccをセット mailItemObj.subject = subject '件名をセット mailItemObj.Body = mailBody & vbCrLf & vbCrLf & mailBody2 & credit 'メール本文 改行 改行 クレジット
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
>B14からC24 これが配列になっているので文字列に出来ないからじゃないですか?
どんな表の文字列にすべきか分かりませんが、 例えば (Microsoft365なので、以下、数式一発で)
>' mailBody2 = Range("B14:C24") '本文2 ↓ mailBody2 = ActiveSheet.Evaluate _ ("TEXTJOIN("""",TRUE,BYROW(B14:C24,LAMBDA(body2,TEXTJOIN(""""," & _ "TRUE,body2,IF(CONCAT(body2)="""","""",CHAR(13))))))")
(半平太) 2024/03/28(木) 19:45:58
↑ ちょっと、ごてごてし過ぎていました。 見直し後 ↓ mailBody2 = ActiveSheet.Evaluate _ ("TEXTJOIN("""",TRUE,B14:B24&C14:C24&IF(B14:B24="""","""",CHAR(13)))")
(半平太) 2024/03/28(木) 20:05:16
どこかのネットで拾ってきたものです。
Sub macro() Dim Ap As Object Dim M As Object 'Excelで選択しているものをコピー(図でも表でもOKです) Selection.Copy Set Ap = CreateObject("Outlook.Application") Set M = Ap.CreateItem(0) M.BodyFormat = 3 'リッチテキスト形式 M.Body = "テストです" 'メールの本文 M.To = "test @ test" 'アドレス M.Subject = "テスト" '件名 M.Display '画面を表示 With Ap.ActiveInspector '貼り付け .WordEditor.Windows(1).Selection.Paste End With End Sub
(xyb4) 2024/03/29(金) 09:52:27
>罫線もつけて本文に追加したい
ネットで検索すると、MsWordの力を借りないとそれは出来ないらしいです。 https://extan.jp/?p=6692 【Outlook VBA】メール本文にExcel表を挿入し作成/送信する方法!
kjさんのPCにWordも入っているとすると、Wordも参照設定してから、以下の様に変更
>mailItemObj.Body = mailBody & vbCrLf & vbCrLf & mailBody2 & credit 'メール本文 改行 改行 クレジット ↓ Dim objWRG As Word.Range, strPastePos As String strPastePos = "<表挿入位置>" mailItemObj.Body = mailBody & vbCrLf & vbCrLf & strPastePos & vbCrLf & credit Set objWRG = mailItemObj.GetInspector.WordEditor.Range(0, 0) objWRG.Find.Text = strPastePos objWRG.Find.Execute Range("B14:C24").Copy objWRG.Paste
(半平太) 2024/03/29(金) 10:32:09
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.