
VBAでoutlook365が起動しません。EXCELまたは、OUTLOOK設定がおかしいのでしょうか。
メール一括作成のボタンを押しても『記載に誤りが無いことを確認しましたか?』『"送信完了しました』のメッセージは出るのですが、outlookが起動しませんし下書ホルダにも保存されません。
EXCELは他のマクロは動作しますし、Outlookはセキュリティ(トラストセンター)設定も有効です。どなたかご教示いただけますようお願いいたします。
EXCEL画面の画像と下記に対象の記述を記します。
-------------------------------------------------------
Sub メール作成()
Dim objOutlook As Outlook.Application
Dim objMail As Outlook.MailItem
Dim wsMail As Worksheet
Dim filead As String
Dim tenp1 As String
Dim tenp2 As String
'メール立ち上げ
Set objOutlook = New Outlook.Application
Set wsMail = ThisWorkbook.Sheets("リスト")
'添付ファイルのアドレスを変数にする
filead = Worksheets("リスト").Range("B3").Value
'共通添付データのアドレスを読む
tenp1 = filead & "\" & Worksheets("リスト").Range("B4")
tenp2 = filead & "\" & Worksheets("リスト").Range("B5")
Dim kobetsumail1 As String
Dim kobetsumail2 As String
Dim adrs1 As String
Dim asrs2 As String
'変数iを設定。最初は1
Dim i As Long
i = 1
'送付前の確認メッセージ
Dim rc As Long
rc = MsgBox("記載に誤りが無いことを確認しましたか?", vbYesNo + vbQuestion, "確認")
If rc = vbNo Then
MsgBox "中断しました"
End
End If
'基準となるセルを選択
Worksheets("リスト").Select
Range("B7").Select
'取引先名が書かれているB列が空欄になるまで続ける
Do Until ActiveCell.Offset(i, 0).Value = ""
'送付チェック欄が○なら作業を続ける
If ActiveCell.Offset(i, 2).Value = "○" Then
Set objMail = objOutlook.CreateItem(olMailTtem)
'個別メールのデータ名称を読む
Dim CC12(1) As String
CC12(0) = ActiveCell.Offset(i, 6).Value
CC12(1) = ActiveCell.Offset(i, 8).Value
'メールを作成する
With wsMail
objMail.to = ActiveCell.Offset(i, 4).Value
objMail.CC = Join(CC12, ";")
objMail.Subject = Range("B1").Value
objMail.Bodyformat = olFormatPlain
objMail.body = Range("B7").Offset(i, 0) & vbCrLf & Range("E7").Offset(i, 0) & "様" & vbCrLf & vbCrLf & Range("B2").Value & vbCrLf & vbCrLf
kobetsumail1 = ActiveCell.Offset(i, 9).Value
asrs1 = filead & "\" & kobetsumail1
kobetsumail2 = ActiveCell.Offset(i, 10).Value
asrs2 = filead & "\" & kobetsumail2
If Range("B4").Value <> "" Then
objMail.Attachments.Add tenp1
End If
If Range("B5").Value <> "" Then
objMail.Attachments.Add tenp2
End If
If ActiveCell.Offset(i, 9).Value <> "" Then
objMail.Attachments.Add asrs1
End If
If ActiveCell.Offset(i, 10).Value <> "" Then
objMail.Attachments.Add asrs2
End If
objMail.Display
End With
End If
i = i + 1
Loop
Set objOutlook = Nothing
MsgBox "送信完了しました"
End Sub

No.4ベストアンサー
- 回答日時:
#1です、
Option Explicitを付けて混乱してしまっているかも知れませんし
少し判り難かったかも・・なので重複しますが補足します
見当違いかもしれませんが・・・
エラーが出ないので、設定ではないと思います
Outlookが起動しないように見える(メールItemも表示されない)と言う事は
条件の外でSet objOutlook = New Outlook.Applicationで起動
なので起動しているはず
条件に一致でSet objMail = objOutlook.CreateItem(olMailItem)で
メール作成なので条件に一致した処理が1度も行われていない可能性があります("○" で処理されていな可能性があります)
"○"には文字種がありますのでセルに入力されている ○ をコード内の ○ (又は逆)にコピペしてみて実行してみてください
Option Explicitについては変数宣言を強制するオプションです
オプション設定する事で問題点が判り易くなりますが、一定のスキルが必要になります
Option Explicitを奨めた訳
モジュール文頭にOption Explicitを付けていなければ
エラーにはならないかも知れませんが、修正すべき箇所が見受けられます
objOutlook.CreateItem(olMailTtem)は
objOutlook.CreateItem(olMailItem)
asrs1 asrs2 多分 adrs1 adrs2の間違え
以下はその他
With wsMailは使われていません(.Rangeのようにする必要があります)
objMail.bodyについては他の場所と同じような書き方に・・
objMail.Attachments.Add
ファイルの存在を確認した方が良いです、なければエラーで止まります
予防の為
If Dir(tenp1) <> "" Then objMail.Attachments.Add tenp1
とか・・
送信や保存についてはすでに回答にある通りですね
確認せずに送るのは怖いけれど、定型ならOKかな
Qchan1962様
いつも返信ありがとうございます。
うまくいきました。
『"○"には文字種がありますのでセルに入力されている ○ をコード内の ○ (又は逆)にコピペしてみて実行してみてください』で成功です。
初歩的なことだったんですね。ありがとうございます。
ただ、追加で確認を求める画面が出てくとよいのですが
どの部分に何という構文を入れたらよいのかが。。。
恐れ入りますが、こちらもわかりましたら教えて頂けませんでしょうか。
No.3
- 回答日時:
こんにちは
>outlookが起動しませんし下書ホルダにも保存されません。
起動していないとするとエラーが発生すると思いますが、「起動していない事」をどのようにして確認しましたか?
保存や送信がされないのは(既回答にもありますが)保存も送信もしていないから。
>objMail.Display
の後に、
Stop
あるいは、
Msgbox "OK?"
などを入れておけば、元のデータに応じて、順に内容が表示されませんか?
正しく表示されない様であれば、メール作成部分に間違えがあるのでしょうから、内容を再チェックしてみてください。
(どのように作成なさりたいのか説明がないので、回答者にはわかりません)
正しく表示できているのなら、メールを送るなり保存するなりの処理を加えれば良いものと思われます。
No.1
- 回答日時:
急いでいるようなので、ざっくり見た感じで回答します
>『"送信完了しました』のメッセージは出るのですが
このメッセージを出すコードの条件は、メッセージ内容と異なります
(Outlookの処理をしなくても表示される。場所、条件になっています)
Do Until ActiveCell.Offset(i, 0).Value = ""
'送付チェック欄が○なら作業を続ける
If ActiveCell.Offset(i, 2).Value = "○" Then
の条件にマッチしているか確認してみてください
最後までエラー無く実行されるのであれば、F8などでステップ実行して
挙動を確かめてみましょう。
また、
モジュール文頭にOption Explicitを追加して変数名、プロパティなどを確認してください
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
同時に二箇所にメールを転送で...
-
UTF-8でのメール送信の問題点
-
perlでメールフォームを作成し...
-
メールフォームCGIを探していま...
-
VBAでoutlook365が起動しません。
-
DreamWeaverCS4でのフォーム作...
-
Form間での値の受け渡しについて
-
perlで文字の一部を削除したい
-
perl初心者ですが・・・助けて...
-
月刊LinuxWorldのめっちゃ便利...
-
古い Perl における制約??
-
日付を入力すると曜日が返って...
-
Cannot redeclare/ Xoops legacy
-
インストールについて(初心者...
-
if ($t_image)の意味について教...
-
CPANのメッセージ
-
My関数の有効な使い方。
-
文字置き換えのエラーについて
-
ptkdbを使ってCGIプログラムを...
-
全角空白での文字列分割について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでoutlook365が起動しません。
-
【C言語】メールを送信するプロ...
-
プロキシ経由でjavamailを使っ...
-
sendmailでメール送信
-
LotusScript メール作成方法が...
-
smtpでのメール送信?
-
VBScriptで、メールの送信をし...
-
メールボックスの確認フォーム...
-
Exchangeを使用したメール送信...
-
Perl メール 文字化け
-
ASPでのsendmail(BASP21の使用...
-
メールフォームが自作できません
-
CDO.Messageを使ったVBScript
-
ColdFusionMXのCFMAILについて
-
Perl初心者です。
-
headでファイル情報を取得する...
-
リンクをクリックするだけでC...
-
VBAでsmtp認証をするには?
-
Net::SMTPでメールを送信したい...
-
Sendmail送信OEは受信できるが...
おすすめ情報