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

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

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

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

Outlook

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

解決済

1回答

3909閲覧

ExcelVBAを使用し、本文内容・送信先を変えつつ複数の連絡先にメールを一括送信したい

hinomar

総合スコア8

VBA

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

Outlook

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2020/10/26 10:22

前提・実現したいこと

ExcelVBAを使用し、内容を変えつつ複数の連絡先にメールを一括送信したいです。
実現したいのは、下記urlに記載されている内容です。

https://tonari-it.com/vba-outlook-mail-send-malinglist/

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

コンパイルエラー: メソッド または データメンバーが見つかりません。

該当のソースコード

VBA

1Sub SendEmail() 2 3Dim objOutlook As Outlook.Application 4Dim i 5Dim rowMax As Long 6Dim wsList As Worksheet 7Dim wsMail As Worksheet 8Dim objMail As Outlook.MailItem 9 10Set objOutlook = New Outlook.Application 11Set wsList = ThisWorkbook.Sheets("送信先") 12Set wsMail = ThisWorkbook.Sheets("メール内容") 13 14With wsList 15 16 '送信先の件数 17 rowMax = .Cells(Rows.Count, 1).End(xlUp).Row 18 19 '送信先の件数分繰り返す 20 For i = 2 To rowMax 21 Set objMail = objOutlook.CreateItem(olMailItem) 22 With wsMail 23 .To = wsList.Cells(i, 4).Value 'メール宛先 24 .Subject = .Range("B1").Value 'メール件名 25 .BodyFormat = olFormatPlain 'メールの形式 26 .Body = wsList.Cells(i, 1).Value & vbCrLf & _ 27 wsList.Cells(i, 2).Value & " " & _ 28 wsList.Cells(i, 3).Value & " 様" & vbCrLf & vbCrLf & _ 29 .Range("B2").Value 'メール本文 30 31 objMail.Send 32 End With 33 Next i 34 35 Set objOutlook = Nothing 36 MsgBox "送信完了" 37 38End With 39 40End Sub

試したこと

"送信先"シートの中身が同じ文字列(テスト)ばかりだったので、バラバラの文字列にしました。
"メール内容"シートは他のマクロで正常に読み込むのを確認しています。

コードはurl参照先から変えていません。何か問題があるのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

参照したリンク先のコードが間違ってますね。
たぶんタイプミスですね。

vba

1 2'前略 3 4 For i = 2 To rowMax 5 Set objMail = objOutlook.CreateItem(olMailItem) 6 ' With wswsMail この行間違い 7 With objMail 'こちらに修正 8 .To = wsList.Cells(i, 4).Value 'メール宛先 9 .Subject = .Range("B1").Value 'メール件名 10 .BodyFormat = olFormatPlain 'メールの形式 11 12'後略 13

投稿2020/10/26 12:41

hatena19

総合スコア33715

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

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

hinomar

2020/10/27 00:12 編集

回答ありがとうございます。早速修正してみたのですが、 ``` 実行時エラー'438' オブジェクトは、このプロパティまたはメソッドをサポートしていません。 ``` と出てしまいます。 デバッグでは、以下の行にエラーが出ています。 ```VBA .Subject = .Range("B1").Value 'メール件名 ``` どのようにすれば解決するでしょうか…
hatena19

2020/10/27 00:15

エラー行を下記に修正してみてください。 .Subject = wsList.Range("B1").Value 'メール件名 他に同様のエラーがでたら、同様に修正してください。
hinomar

2020/10/27 00:21

```VBA '送信先の件数分繰り返す For i = 2 To rowMax Set objMail = objOutlook.CreateItem(olMailItem) With objMail .To = wsList.Cells(i, 4).Value 'メール宛先 .Subject = wsMail.Range("B1").Value 'メール件名 .BodyFormat = olFormatPlain 'メールの形式 .Body = wsList.Cells(i, 1).Value & vbCrLf & _ wsList.Cells(i, 2).Value & " " & _ wsList.Cells(i, 3).Value & " 様" & vbCrLf & vbCrLf & _ wsMail.Range("B2").Value 'メール本文 objMail.Send ``` に変えたところエラーが変化しました。 objMail.Send の行にエラーが出ており、送信先を指定してくださいと言われます。 ``` 実行時エラー'-2147467259(80004005)' 送信先を指定する必要があります。名前を少なくとも1つ入力していることを確認してください。 ``` メールは打っているのですが…書式設定なども何か影響を与えるのでしょうか。
hinomar

2020/10/27 00:22

回答ありがとうございます。丁度同じタイミングで打っておりましたので前後しました…
hatena19

2020/10/27 00:38

wsList.Cells(i, 4).Value にメールアドレスが入っているか確認してみてください。 下記を参考にデバッグしてみてください。 VBA デバッグの仕方 https://www.tipsfound.com/vba/01010
hinomar

2020/10/27 00:48

済みません、行けました。 この度は何度も丁寧にありがとうございました。 また自分1人ではどうしようもないことがありましたら お助け頂けますと嬉しいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問