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

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

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

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

Outlook

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

Q&A

2回答

3288閲覧

宛先ごとに対応した添付ファイルをつけて一括送付するVBA

MinaSuzuki

総合スコア0

VBA

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

Outlook

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

0グッド

1クリップ

投稿2020/07/22 08:35

ここに質問の内容を詳しく書いてください。
表題のように、Outlookと連携し会社ごとに対応した添付ファイルをつけて、一括送付するVBAを作りたいと考えています。
メール作成に必要なデータは全て一つのSheet(Contents)に記載しています。
VBA初心者でまだ理解不足が多く、どなたかお力添えいただければ幸いです。

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

『実行時エラー 424 オブジェクトが必要です』

該当のソースコード

Sub Invoice用一括メール送信マクロ2() Dim objOutlook As outlook.Application Dim i Dim rowMax As Long Dim wsMail As Worksheet Dim objMail As outlook.MailItem Set objOutlook = CreateObject("outlook.Application") Set wsMail = ThisWorkbook.Sheets("Contents") With wsList '送信先の件数 rowMax = .Cells(Rows.Count, 1).End(xlUp).row '送信先の件数分繰り返す For i = 2 To rowMax Set objMail = objOutlook.CreateItem(olMailItem) objMail.To = wsMail.Cells(i, 1).Value 'メールTo宛先' objMail.CC = wsMail.Cells(i, 2).Value 'メールCc宛先' objMail.subject = wsMail.Cells(i, 3).Value 'メール件名' objMail.BodyFormat = olFormatPlain 'メール文頭' objMail.body = wsMail.Cells(i, 4).Value & vbCrLf & _ wsMail.Cells(i, 5).Value & " san" & vbCrLf & vbCrLf & _ wsMail.Cells(i, 6).Value 'メール本文' '--- 添付ファイル設定 ---' Dim Wm_ITEM Dim folder As String Dim FileName As String folder = wsMail.Cells(i, 7).Value FileAd = wsMail.Cells(i, 8).Value Wm_ITEM.Attachments.Add folder & "\" & FileName '--- メールの送付の実行---' objMail.Display Next i Set objOutlook = Nothing MsgBox "送信完了 / Send completely" End With End Sub

試したこと

Setを追記

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

添付するのは、Wm_ITEMではなくobjMailになります。

objMail.Attachments.Add folder & "\" & FileAd


またobjMail.Displayですと表示して終了してしまいます
送信まで行うならobjMail.Sendになります。

投稿2020/07/26 01:57

sinzou

総合スコア392

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

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

0

メール作成に必要なデータは全て一つのSheet(Contents)に記載されているのならば

With wsList

ではなく

VBA

1 2With wsMail 3 4 '送信先の件数 5 rowMax = .Cells(Rows.Count, 1).End(xlUp).Row 6 7 objMail.Subject = .Cells(i, 3).Value 'メール件名' 8 objMail.BodyFormat = olFormatPlain 'メール文頭' 9 objMail.body = .Cells(i, 4).Value & vbCrLf & _ 10 .Cells(i, 5).Value & " san" & vbCrLf & vbCrLf & _ 11 .Cells(i, 6).Value 'メール本文' 12 13 '--- 添付ファイル設定 ---' 14 Dim Wm_ITEM 15 Dim folder As String 16 Dim FileName As String 17 18 folder = .Cells(i, 7).Value 19 FileAd = .Cells(i, 8).Value 20 21 Wm_ITEM.Attachments.Add folder & "\" & FileName 22 23 24 '--- メールの送付の実行---' 25 objMail.Display 26 27 Next i 28 29 Set objOutlook = Nothing 30 MsgBox "送信完了 / Send completely" 31 32End With

とします。

投稿2020/07/23 07:53

ryuno_vanilla

総合スコア119

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

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

MinaSuzuki

2020/07/24 08:45 編集

ryuno_vanilla さん ありがとうございます!一つのSheetに記載されていれば記載方法が変わるんですね。 ご教授ありがとうございます。勉強になりました。 まだ同じエラーが出ているので、フォルダーの指定辺りが引っかかっているのかもしれません。 もう少し検証を続けて、また手詰まりになったら質問させていただきます。 ありがとうございました!
ryuno_vanilla

2020/07/24 13:14

再検証してみました。 エラーの箇所は Wm_ITEM.Attachments.Add folder & "\" & FileName ですよね? FileNameはFileAdだと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問