質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

Q&A

1回答

1100閲覧

VBAでメールを作成し、オートフィルターで選択したデータを特定の位置に貼付したい

mya_1177

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

0グッド

1クリップ

投稿2021/05/10 11:45

前提・実現したいこと

VBAでOutlookメールを作成し、特定の場所に表を挿入したいです。
表の詳細ですが、氏名・会社名・請求金額のリストが別シート(個別リスト)であり、
氏名でオートフィルターを選択し、個人別に作成したメールへ、
該当者のデータを貼付していきたいという内容です。

シートの構成は、
① メール作成のもとになるシート
イメージ説明

② 上記表のもとになる、シート
イメージ説明

オートフィルターで選択する対象は、①のK列に記載の氏名の方になり、
同一の氏名のメールに表を貼付する形にしたいです。

発生している問題・エラーメッセージ

メール作成まではできているのですが、表貼付のコードがわかりません。

該当のソースコード

Sub MsgfileSave()

'一覧の最終行取得
Dim maxRow As Long
maxRow = Cells(Rows.Count, 1).End(xlUp).Row

'リスト行数分メール送信処理を実施
Dim i As Long

For i = 4 To maxRow

'Outlookオブジェクトの変数宣言
Dim outlookObj As Outlook.Application
Set outlookObj = New Outlook.Application

'メール送信用のオブジェクト作成 本文はメールFMTを使用
Dim mailObj As Outlook.MailItem
Set mailObj = outlookObj.CreateItemFromTemplate(Cells(2, 3).Value)

With mailObj
.SentOnBehalfOfname = Cells(4, 2).Value 'FROM
.To = Cells(i, 5).Value 'TO
.CC = Cells(i, 6).Value 'CC
.BCC = Cells(i, 7).Value 'BCC
.Subject = Cells(i, 4).Value '件名

'添付ファイル1の記載があれば、指定ファイルを添付
If Cells(i, 9).Value = "" Then
Else

.Attachments.Add Cells(2, 9).Value & "" & Cells(i, 9).Value 'ファイル添付
End With

'Msg形式で保存
mailObj.SaveAs Cells(2, 8).Value & "" & Cells(i, 8).Value

Next i

MsgBox "MsgFile作成完了"

End Sub

試したこと

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Excelの表をOutlookの本文に埋め込む方法としては以下のURLのマクロが参考になると思います。
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/

VBA

1Public Sub CopyTableToMail() 2 ' 転記する Excel ファイルの列の開始位置 3 Const COL_START = 1 4 ' 転記する Excel ファイルの列の数 5 Const NUM_COLS = 5 6 ' 転記する Excel ファイルの行の開始位置 7 Const ROW_START = 1 8 ' 転記する Excel ファイルの行の数 9 Const NUM_ROWS = 10 10 ' Outlook の定数 11 Const olMailItem = 0 12 Const olFormatRichText = 3 13 ' 14 Dim appOlk As Object ' Outlook.Application 15 Dim objItem As Object ' Outlook.MailItem 16 Dim wrdEditor As Object ' Word.Document 17 Dim wrdTable As Object ' Word.Table 18 Dim wrdRange As Object ' Word.Range 19 Dim iCol As Integer 20 Dim iRow As Integer 21 ' Outlook の Application オブジェクトを取得 22 Set appOlk = CreateObject("Outlook.Application") 23 ' 新規アイテムを作成 24 Set objItem = appOlk.CreateItem(olMailItem) 25 ' 26 objItem.BodyFormat = olFormatRichText 27 ' 新規アイテムの WordEditor オブジェクトを取得 28 Set wrdEditor = objItem.GetInspector().WordEditor 29 ' WordEditor にフォーカス設定 30 wrdEditor.Activate 31 ' 表の挿入位置を取得 32 Set wrdRange = wrdEditor.Application.Selection.Range 33 ' 本文に表を挿入 34 Set wrdTable = wrdEditor.Tables.Add(wrdRange, NUM_ROWS, NUM_COLS) 35 ' 36 With wrdTable 37 ' 表のスタイルを指定 38 .Style = "表 (格子)" 39 ' 表の [タイトル行] をオン 40 .ApplyStyleHeadingRows = True 41 ' 表の [集計行] をオン 42 .ApplyStyleLastRow = False 43 ' 表の [最初の列] をオン 44 .ApplyStyleFirstColumn = True 45 ' 表の [最後の列] をオン 46 .ApplyStyleLastColumn = False 47 ' 表の [縞模様 (行)] をオン 48 .ApplyStyleRowBands = True 49 ' 表の [縞模様 (列)] をオフ 50 .ApplyStyleColumnBands = False 51 ' Excel の表のデータを本文のテーブルに転記 52 For iCol = 1 To NUM_COLS 53 For iRow = 1 To NUM_ROWS 54 ' .Cell は本文の表のセル 55 ' Cells は Excel の表のセル 56 .Cell(iRow, iCol).Range.Text = _ 57 Cells(ROW_START + iRow - 1, COL_START + iCol - 1).Value 58 Next 59 Next 60 End With 61 ' 表を挿入したアイテムを表示 62 objItem.Display 63End Sub

投稿2021/05/13 11:40

millefeuille

総合スコア221

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問