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

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

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

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

Outlook

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

Q&A

0回答

1730閲覧

Excel VBA メール一括送信でエラーが発生する

akinco

総合スコア17

VBA

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

Outlook

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

0グッド

0クリップ

投稿2019/12/16 08:37

編集2019/12/26 02:47

下記コードを実行すると
ストアアプリ版Officeの環境下のみ下図のエラーが発生します。
(デスクトップ版では正常に動作することを確認しています。)

原因や- リスト回避策がありましたらご教授ください。
イメージ説明

VBA

1Enum col '1以降の数値を省略した場合は+1される 2 宛先 = 1 3 社名 4 担当者名 5End Enum 6 7Sub Outlookメール一括作成() 8 9 Dim OutlookObj As Outlook.Application 'Outlookオブジェクトの作成 10 Set OutlookObj = CreateObject("Outlook.Application") 11 12 Dim r As Long 13 For r = 2 To Cells(1, 1).End(xlDown).Row '対象人数分の処理を繰り返す 14 15 Dim mailItemObj As Outlook.MailItem 'メールアイテムオブジェクト作成 16 Set mailItemObj = OutlookObj.CreateItem(olMailItem) 17 18 Dim mailBody As String 19 mailBody = CreateMailBody(r) 'メール本文作成 20 21 With mailItemObj 'メールアイテム作成 22 .To = Cells(r, col.宛先).Value 'Toを設定 23 .subject = Cells(1, "H").Value '件名を設定 24 .Body = mailBody '本文を設定 25 End With 26 27 Dim attached As String 28 Dim myattachments As Outlook.Attachments 'Outlookで使用するオブジェクト生成 29 Set myattachments = mailItemObj.Attachments 30 attached = Cells(33, "H").Value '添付ファイル 31 myattachments.Add attached 32 33 mailItemObj.Display '下書きを表示 34 35 '次のメールアイテムを作成するためいったん破棄 36 Set mailItemObj = Nothing 37 38 Next r 39 40End Sub 41 42Function CreateMailBody(r As Long) As String 43' 機能:Excelシート上の指定行番号のメール本文を作成する 44 45 Dim sName As String, DayOfUse As String, price As Long 46 CName = Cells(r, col.社名).Value 47 sName = Cells(r, col.担当者名).Value 48 49 Dim sign As String '署名 50 sign = Cells(25, "H").Value 51 52 Dim mBody As String 'メール本文 53 mBody = Cells(2, "H").Value '初期値を設定 54 mBody = Replace(mBody, "(社名)", CName) 55 mBody = Replace(mBody, "(担当者名)", sName) 56 mBody = mBody & vbCrLf & vbCrLf & sign '末尾に署名を付与 57 58 CreateMailBody = mBody 59 60End Function 61

<補足> 情報不足ですみませんでした。追記いたします。

VBA

1 Dim attached As String 2 Dim myattachments As Outlook.Attachments 'Outlookで使用するオブジェクト生成 3 Set myattachments = mailItemObj.Attachments 4 attached = Cells(33, "H").Value '添付ファイル 5    '↑ここで処理がとまり、エラーが発生します。 6 7 myattachments.Add attached

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

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

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

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

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

imihito

2019/12/18 11:55

ストアアプリ側のセキュリティ的な兼ね合いだと思われるので、VBA側での対処は難しいと思います(調べればストアアプリ版のOffice、とくにOutlookの挙動が変わっているという話がたくさん出てきます) また、純粋な質問の仕方として、エラーメッセージだけでなく「どの行でエラーが起きているか」、「エラーが起きた行の操作に関連する変数の値」あたりの情報も欲しいところです。
akinco

2019/12/26 02:50

ご回答・ご指摘ありがとうございます。 エラーコードを調べても説明がなく行き詰っていました。 補足しましたのでよろしくお願いいたします。
imihito

2019/12/26 04:31

String型の変数`attached`へのセルの値の代入でエラーになっている(デバッグ時に黄色になっている)ということでよろしいですか? その位置のエラーで、そのエラーメッセージがでるとは考えにくいのですが…
akinco

2020/01/06 02:46

おっしゃる通りです。 ストア版のみこのエラーがでるので、ソースが間違っている可能性は低いと思っています。 officeの詳細設定、またはWindowsのサービス又はセキュリティ等の設定で回避できるのか… 調べても同様のケースがなく完全に行き詰っています。。。 お付き合いいただきましてありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問