Sub Mail_workbook_Outlook_6()
'Working in 2000-2010
'This example send the last saved version of the Activeworkbook
Dim OutApp As Object
Dim OutMail As Object
Dim emailRng As Range, cl As Range
Dim sTo As String
Set emailRng = Worksheets("スクール生 (2)").Range("L3:L47,M44")
For Each cl In emailRng
sTo = sTo & ";" & cl.Value
Next
sTo = Mid(sTo, 2)
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = sTo
.CC = "future2016kawagoe@yahoo.co.jp"
.BCC = ""
.Subject = "RMA #" & Worksheets("RMA").Range("E1")
.Body = "Attached to this email is RMA #" & _
Worksheets("RMA").Range("E1") & _
". Please follow the instructions for your department included in this form."
'You can add other files also like this
'.Attachments.Add ("C:\test.txt")
.Display
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
というVBAを使ってメールを送っているのですが
起動するメーラーをoutlookからWindows Liveメールに変更できますか?
よろしくお願いいたします。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
書き忘れました。
全く気が付かなかったのですが、、Rubyなのですね。。
何で迷い込んだか分かりませんが、、Excel VBAと思い回答しておりました。
すみません。
No.5
- 回答日時:
こんにちは、
>そのコードを教えていただきたいです。
ほぼ、#4のものです。
アドレスの抽出部分は違いますが、、、
また、送信結果をメールで
Mail_To = "*******@yahoo.co.jp"
Mail_Body = "全送付先アドレス" & vbCrLf & Full_list & vbCrLf & "通知内容" & vbCrLf & Mail_Body
Call OL_SendEmail(Mail_To, Mail_Cc, Mail_Body, Mail_Subject)
送るところも違います。その部分は、データとしてCSV出力しています。
この送る作業の前に、リスト作成などのVBAもありますし、Bodyの初めには、
Mail_Body = Tgt.Offset(, -3).Value & vbCrLf & _
Tgt.Offset(, -2).Value & " " & _
Tgt.Offset(, -1).Value & " 様" & vbCrLf & vbCrLf & _
wsMail.Range("B2").Value & wsMail.Range("B3").Value
と、法人名、名前、があり、本文、送り元情報が付きます。
ご希望なので、下記に(該当部分以外の処理は、削除しています。Setしたシート名を変更などして
該当セルに、添付図(縮小しています。)のような送信リストを作成すれば、そのまま使えるかもです。。
追記:書き方は、色々あると思います。変な書き方かもしれませんが、素人なので、勘弁してくださいね。
Option Explicit
Dim objOutlook As OutLook.Application
Sub SendEmail()
Dim j As Long, Tgt As Variant
Dim Mail_To As String, Mail_Cc As String, Mail_Body As String, Mail_Subject As String
Dim wsList As Worksheet: Set wsList = ThisWorkbook.Sheets("コントロール")
Dim wsMail As Worksheet: Set wsMail = ThisWorkbook.Sheets("メール本文")
Dim rc As Integer
rc = MsgBox("メール配信処理を行いますか?", vbYesNo + vbQuestion, "確認")
If rc = vbYes Then
j = 0
For Each Tgt In wsList.Range("D2:D" & wsList.Cells(Rows.Count, 4).End(xlUp).Row)
Mail_To = Tgt.Value 'メール宛先
Mail_Cc = ""
Mail_Subject = wsMail.Range("B1").Value
Mail_Body = Tgt.Offset(, -3).Value & vbCrLf & _
Tgt.Offset(, -2).Value & " " & _
Tgt.Offset(, -1).Value & " 様" & vbCrLf & vbCrLf & _
wsMail.Range("B2").Value & wsMail.Range("B3").Value
Call OC_SendEmail(Mail_To, Mail_Cc, Mail_Body, Mail_Subject)
'他の処理あり
j = j + 1
Next Tgt
'他の処理あり
MsgBox j & "件 送信完了"
wsList.Range("H4") = Format(Now, "yyyymmdd")
If objOutlook Is Nothing Then Set objOutlook = Nothing
Set wsList = Nothing
Set wsMail = Nothing
End If
End Sub
Function OC_SendEmail(Mail_To As String, Mail_Cc As String, Mail_Body As String, Mail_Subject As String)
Dim objMail As OutLook.MailItem
Set objOutlook = New OutLook.Application
Set objMail = objOutlook.CreateItem(olMailItem)
With objMail
.To = Mail_To
.CC = Mail_Cc
.Subject = Mail_Subject
.BodyFormat = olFormatPlain 'メールの形式
.Body = Mail_Body
' .Display
.Send '送信 Test時コメントにする
End With
Set objMail = Nothing
End Function
No.4
- 回答日時:
#3続きです
②もう一つは、一通づつ送信して結果をCcに送信する。
Sub SendEmail_Test2()
Dim j As Long
Dim sTo As String
Dim Mail_To As String, Mail_Cc As String, Mail_Body As String, Mail_Subject As String
Dim cl As Range, rc As Integer, Full_list As String
rc = MsgBox("メール配信処理を行いますか?", vbYesNo + vbQuestion, "確認")
If rc = vbYes Then
j = 0
Mail_Body = "Attached to this email is RMA #" & _
Worksheets("RMA").Range("E1") & _
". Please follow the instructions for your department included in this form."
Mail_Subject = "RMA #" & Worksheets("RMA").Range("E1")
For Each cl In Worksheets("スクール生 (2)").Range("L3:L47,M44")
Mail_To = cl.Value
Mail_Cc = ""
Call OL_SendEmail(Mail_To, Mail_Cc, Mail_Body, Mail_Subject)
Full_list = Full_list & cl.Value & "; "
j = j + 1
Next
Mail_To = "future2016kawagoe@yahoo.co.jp"
Mail_Body = "全送付先アドレス" & vbCrLf & Full_list & vbCrLf & "通知内容" & vbCrLf & Mail_Body
Call OL_SendEmail(Mail_To, Mail_Cc, Mail_Body, Mail_Subject)
MsgBox j & "件 送信完了"
End If
End Sub
'SendEmail_Test2で使う
Function OL_SendEmail(Mail_To As String, Mail_Cc As String, Mail_Body As String, Mail_Subject As String)
Dim objOutlook As OutLook.Application
Dim objMail As OutLook.MailItem
Set objOutlook = New OutLook.Application
Set objMail = objOutlook.CreateItem(olMailItem)
With objMail
.To = Mail_To
.cc = Mail_Cc
.Subject = Mail_Subject
.BodyFormat = olFormatPlain 'メールの形式
.Body = Mail_Body
.Display
' .Send
End With
Set objMail = Nothing
End Function
こんな回答していると叱られるかな。すみません。
No.3
- 回答日時:
こんにちは、Windows live mailは、VBAによる操作サポートはないようです。
WindowsAPIで起動して、、とか考えても難しいのではないでしょうか?
(出来るとは思いますが、、Windows live mail 環境がないので検証できません。)
デフォルトメーラーにWindows live mailを設定すれば、一度の起動の設定を
飛ばす事は出来そうですが、ExcelのHyperlinksをかえして実行するくらいしか思い浮かびません。
その場合、検証できませんが、こんな感じ?
Option Explicit
Sub test()
Dim Mail_To As String, Mail_Cc As String
Dim Mail_Body As String, Mail_Subject As String
Dim emailRng As Range, cl As Range
Dim sTo As String
Set emailRng = Worksheets("スクール生 (2)").Range("L3:L47,M44")
For Each cl In emailRng
sTo = sTo & ";" & cl.Value
Next
sTo = Mid(sTo, 2)
Mail_To = sTo
Mail_Cc = "future2016kawagoe@yahoo.co.jp"
Mail_Body = "Attached to this email is RMA #" & _
Worksheets("RMA").Range("E1") & _
". Please follow the instructions for your department included in this form."
Mail_Subject = "RMA #" & Worksheets("RMA").Range("E1")
Worksheets("Sheet1").Activate
With ActiveSheet
.Range("A1").Select
.Hyperlinks.Add _
Anchor:=Selection, _
Address:="mailto:?" & _
"to=" & Mail_To & _
"&cc=" & Mail_Cc & _
"&body=" & Mail_Body & _
"&subject=" & Mail_Subject, _
TextToDisplay:="Test"
.Hyperlinks(1).Follow
.Hyperlinks.Delete
.Range("A1").Clear
End With
End Sub
しかし、コードにある
Set emailRng = Worksheets("スクール生 (2)").Range("L3:L47,M44")
For Each cl In emailRng
sTo = sTo & ";" & cl.Value
Next
がネックになりそうですね。(文字数制限など)
もし、この問題がWindows live mailに変更しようとする動機なら、処理プロセス自体を
再構築しては、いかがでしょう。
的違いなら、忘れてください。
私の作成したツールでも毎月、同時?に150人以上にOutlookで配信するVBAがあります。
ただ、ご質問の場合だと一々Ccが送信されてしまいますね。
①そこで、送信アドレス文字数を200文字程度に分けて送信する。多分、6~9通くらいになるか~?
②もう一つは、一通づつ送信して結果をCcに送信する。
趣味の範疇なので作ってみました。
参考に成らないかも知れませんし、表題からずれてますね。スレッド汚しですみません。
Sub SendEmail_Test1()
Dim objOutlook As OutLook.Application
Dim i As Long, j As Long
Dim objMail As OutLook.MailItem
Dim Mail_Body As String, Mail_Subject As String
Dim cl As Range, sTo As String, MyLen As Long
Dim rc As Integer, arrTo()
rc = MsgBox("メール配信処理を行いますか?", vbYesNo + vbQuestion, "確認")
If rc = vbYes Then
Set objOutlook = New OutLook.Application
i = 0
MyLen = 200
ReDim arrTo(i)
For Each cl In Worksheets("スクール生 (2)").Range("L3:L47,M44")
If Len(sTo) <= MyLen Then
sTo = sTo & ";" & cl.Value
arrTo(i) = sTo
Else
arrTo(i) = sTo & ";" & cl.Value
sTo = ""
i = i + 1
ReDim Preserve arrTo(i)
End If
Next
Mail_Subject = "RMA #" & Worksheets("RMA").Range("E1")
Mail_Body = "Attached to this email is RMA #" & _
Worksheets("RMA").Range("E1") & _
". Please follow the instructions for your department included in this form."
j = 0
For i = 0 To UBound(arrTo) - 1
Set objMail = objOutlook.CreateItem(olMailItem)
With objMail
.To = arrTo(i) 'メール宛先
.cc = "future2016kawagoe@yahoo.co.jp"
.Subject = Mail_Subject 'メール件名
.BodyFormat = olFormatPlain 'メールの形式
.Body = Mail_Body 'メール本文
.Display
' .Send
End With
j = j + 1
Set objMail = Nothing
Next i
MsgBox j & " 送信完了"
Set objOutlook = Nothing
End If
End Sub
オーバーしてしまうようなので、続きを次に
ありがとうございます。
>私の作成したツールでも毎月、同時?に150人以上にOutlookで配信するVBAがあります。
すごいですね!
私は全くの初心者なんで
そのコードを教えていただきたいです。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- その他(SNS・コミュニケーションサービス) 自分のpcがハッキングされたようなメールが来たのですがどうすればいいですか? 4 2022/10/02 16:14
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Visual Basic(VBA) エクセル VBA メール本文に指定セルに記載されているURLをリンクとして記載する方法 8 2022/08/08 07:50
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB6にてメールを送信する方法
-
バーコードで読み取りメール送信
-
コマンドプロンプトで添付ファ...
-
ヒアドキュメントを利用してメ...
-
mail関数を使うと遅いので
-
AccessのDoCmd.SendObjectについて
-
powerbuilderのメール機能について
-
メールアドレスの存在確認はで...
-
UWSCにつきまして
-
ワードプレス、Contact Form 7...
-
mb_send_mail関数により送信さ...
-
index.phpに入るには、どうすれ...
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
Subversionのリポジトリの削除
-
ImageCreate関数が undefined f...
-
メールフォームのタイトルが文...
-
.phpと.incファイルの違いはな...
-
php 完了画面の送信メールのコ...
-
PHPのif文でその処理を途中で抜...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ワードプレス、Contact Form 7...
-
存在しないメールアドレスかど...
-
VB6にてメールを送信する方法
-
VBでメールを送る時のSMT...
-
submitボタンの二重送信について
-
コマンドプロンプトで添付ファ...
-
メールアドレスの存在確認はで...
-
【エクセルVBA】メール送信前に...
-
ループの中で mailItemObj.Disp...
-
【追加】ファイルを閉じてダイ...
-
ヒアドキュメントを利用してメ...
-
JavaMailでエラーメールの通知
-
送信日時を指定してメールを送...
-
ロリポップと、phpで自動の返信...
-
VB.NETでフリーメールアドレス...
-
★エクセルVBAでOutlookのメール...
-
SMTPサーバの指定なしでメ...
-
AccessのDoCmd.SendObjectについて
-
ブラウザの更新ボタン
-
HPの更新をしたら自動でメール...
おすすめ情報