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

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

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

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

マクロ

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

メール

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

Q&A

2回答

3804閲覧

vbaマクロを使用してoutlookでメールを送りたい

ajiko

総合スコア0

VBA

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

マクロ

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

メール

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

0グッド

0クリップ

投稿2020/09/17 14:05

編集2020/09/18 02:06

前提・実現したいこと

はじめて利用させて頂きます。
マクロというものに知識皆無なのですが、
検索などで作ったものがエラーとなってしまってどうしようもなくなってしまいました…

エクセルマクロで作成したリストからメールを作成したいです。
宛先ごとに異なる添付データをつけたいのですが、
フォルダの指定のコードが違うのかマクロの実行をするとエラーとなります。

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

エラーメッセージ 実行時エラー'-2147024894(80070002)': ファイルが見つかりません。パスとファイル名が正しいかどうかを確認してください。

該当のソースコード

Sub Outlook() Dim oApp Dim Wm_ITEM Dim Wm_TO Set oApp = CreateObject("Outlook.Application") Set myNameSpace = oApp.GetNamespace("MAPI") Set myFolder = myNameSpace.GetDefaultFolder(6) myFolder.display Dim folder As String Dim FileAd As String Dim row As Long Dim shname As String row = 2 shname = "sheet1" Do Until row = 5 Set Wm_ITEM = oApp.CreateItem(0) Wm_TO = "" WS_OutLk = "" If ThisWorkbook.Sheets(shname).Cells(row, 1) <> "" Then Wm_ITEM.To = ThisWorkbook.Sheets(shname).Cells(row, 5).Value Wm_ITEM.CC = ThisWorkbook.Sheets(shname).Cells(row, 6).Value Wm_ITEM.Subject = ThisWorkbook.Sheets(shname).Cells(row, 7).Value Wm_ITEM.Body = ThisWorkbook.Sheets(shname).Cells(row, 2) & _ ThisWorkbook.Sheets(shname).Cells(row, 4).Value Wm_ITEM.Body = Wm_ITEM.Body _ & vbCrLf _ & ThisWorkbook.Sheets(shname).Cells(row, 8).Value folder = ThisWorkbook.Sheets(shname).Cells(row, 9).Value FileAd = ThisWorkbook.Sheets(shname).Cells(row, 10).Value Wm_ITEM.Attachments.Add folder & "\" & FileAd ★ Wm_ITEM.display Wm_ITEM.Save End If row = row + 1 Loop MsgBox "OK" End Sub

デバッグ(F8で進んでいく)というものをした時に2周めの★印のところでエラーが表示されます。
見に行くエクセルの方は1行目と同じフォルダの場所となっており、ファイル名が異なる状態です。
エクセル側の問題なのかもしれませんが、どこをどう直したらいいのか
さっぱりわからずお手上げです…お助けいただければとても助かります。
よろしくお願いします。

### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

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

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

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

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

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

meg_

2020/09/17 14:34

「Wm_ITEM.To = ThisWorkbook.Sheets(shname).Cells(row, 5)」を「Wm_ITEM.To = ThisWorkbook.Sheets(shname).Cells(row, 5).Value」にしたらどうなりますか?
ajiko

2020/09/18 00:54

ありがとうございます!先に進むことが出来ました!!感動です^^
guest

回答2

0

MailItemオブジェクトにToメソッドは公開されていませんから、エラーの内容からして、★の行ではなくSendしたときにエラーが発生しているのではないでしょうか?
そうなるとToに代入しているメールアドレスが正しくないということになりそうです。
以下のようにして正しいメールアドレスが取得できているか確認してみてください。

VBA

1Debug.Print ThisWorkbook.Sheets(shname).Cells(row, 5)

あとできればもう少し前後のコードを提示していただいたほうが解決が早いかと思います。


追加質問の回答

見に行くエクセルの方は1行目と同じフォルダの場所となっており、ファイル名が異なる状態です。

1周目が問題ないのであれば、ファイル名が間違っているということになります。
シートに記載されているファイル名が実際に存在しているか確認してみてください。
また前回と同様にDebug.PrintでfolderとFileAdが期待した値になっているか確認してみてください。
ステップ実行しているのであれば、ローカルウィンドウで確認してもOKです。

投稿2020/09/17 23:59

編集2020/09/18 02:39
ttyp03

総合スコア16998

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

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

ajiko

2020/09/18 01:04

教えて頂いてありがとうございます。 教えていただいたコードをどこに書いていいかもわからない初心者でして、恥ずかしいばかりです。 失礼にあたったら大変申し訳ないのですが他の方に教えていただいた「value」をつける対策で 先に進むことが出来ました。 でもその先でまたエラーになってしまいまして、ご指摘いただいたように 前後(全部)のコードを、もしよろしければ見ていただければ非常に助かるのですが、 こちらに書いてしまって良いものでしょうか?
ttyp03

2020/09/18 01:24

★の行の直前あたりにでも入れてみてください。 イミディエイトウィンドウに出力されます。 コードは質問を編集できますので、今のコードを置き換えるか、追加するようにしてください。
guest

0

こんにちは。
・シートの9列目からフォルダの名前を取得
・シートの10列目から添付ファイルの名前を取得
しているように見えます。

その場所に添付ファイルは存在していますか?
ぜひデバッグでfolderとFileAdになんの文字列が入っているかを確認し、その場所にファイルがあるか確認してみてください。

投稿2020/09/18 02:19

kay-ws

総合スコア105

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問