#030

Описание к видео #030

OutLookメールを自動作成して大量のリストを自動送信したり、Excelの書式を有効にしたりする方法を詳しく説明しています。
■再生リスト
   • Excelパワークエリ  

   • Excelマクロ(VBA)  

   • Excel関数  

   • Excelピボットテーブル  

▼動画で説明しているサンプルコード、コピペ活用ください。
Sub マクロ10_1()
' OutLookのメールを自動作成する
' Outlookオブジェクトの変数宣言
Dim myoutlook As Outlook.Application
Set myoutlook = New Outlook.Application

' メール送信用のオブジェクト作成
Dim mymail As Outlook.MailItem
Set mymail = myoutlook.CreateItem(olMailItem)

' メール送信内容の作成
With mymail
.To = Range("C3").Value 'TO宛先
.CC = Range("C4").Value 'CC宛先
.BCC = Range("C5").Value 'BCC宛先
.Subject = Range("C6").Value '件名
.Body = Range("C7").Value 'メール本文
.BodyFormat = olFormatHTML '形式の設定(テキスト:Plain、HTML:HTML)
.Display 'メールを表示
End With
End Sub
-----------------------------
Sub マクロ10_2()
' 本文の書式をExcelからそのまま利用しOutLookの署名を有効にする
' Outlookオブジェクトの変数宣言
Dim myoutlook As Outlook.Application
Set myoutlook = New Outlook.Application
' メール送信用のオブジェクト作成
Dim mymail As Outlook.MailItem
Set mymail = myoutlook.CreateItem(olMailItem)

' 添付ファイルの最終行取得
Dim maxRow As Long
maxRow = Cells(Rows.Count, 3).End(xlUp).Row
' 添付ファイル行数処理を実施
Dim i As Long

' メール送信内容の作成
With mymail
.To = Range("C3").Value 'TO宛先
.CC = Range("C4").Value 'CC宛先
.BCC = Range("C5").Value 'BCC宛先
.Subject = Range("C6").Value '件名
.BodyFormat = olFormatHTML '形式の設定(テキスト:Plain、HTML:HTML)
'Excelの本文を書式のままコピー
Range("C7").Copy '本文をコピー
Set xlform = .GetInspector.WordEditor.Range(0, 0) 'メールアイテムをWordEditor経由で編集
xlform.PasteExcelTable False, False, False '予定表本文へExcelの書式付で貼り付け
'ファイルを添付
For i = 8 To maxRow '8行目から最終行までのファイルを対象
If Range("C8").Value <> "" Then 'C8が空白以外の場合
.Attachments.Add Cells(i, "C").Value + Cells(i, "D").Value 'ファイルを添付
End If
Next i
.Display 'メールを表示
End With
Application.CutCopyMode = False 'コピーモード終了

End Sub
-----------------------------

Sub マクロ10_3()
' 複数のメールを一括送信したい
On Error GoTo error 'エラー発生時errorまで飛ぶ

' 添付ファイルの最終行取得
Dim maxRow As Long
maxRow = Cells(Rows.Count, "G").End(xlUp).Row
' 添付ファイル行数処理を実施
Dim i As Long
For i = 3 To maxRow '3行目から最終行までのファイルを対象

' Outlookオブジェクトの変数宣言
Dim myoutlook As Outlook.Application
Set myoutlook = New Outlook.Application
' メール送信用のオブジェクト作成
Dim mymail As Outlook.MailItem
Set mymail = myoutlook.CreateItem(olMailItem)

' 以降P列に”送信”と表示されているものだけ処理を進める
If Cells(i, "P") <> "" Then

' メール送信内容の作成
With mymail
.To = Cells(i, "G").Value 'TO宛先
.CC = Cells(i, "H").Value 'CC宛先
.BCC = Cells(i, "I").Value 'BCC宛先
.Subject = Cells(i, "J").Value '件名
.BodyFormat = olFormatHTML '形式の設定(テキスト:Plain、HTML:HTML)
' Excelの本文を書式のままコピー
Cells(i, "K").Copy '本文をコピー
Set xlform = .GetInspector.WordEditor.Range(0, 0) 'メールアイテムをWordEditor経由で編集
xlform.PasteExcelTable False, False, False '予定表本文へExcelの書式付で貼り付け
'ファイルを添付
If Cells(i, "L").Value <> "" Then 'L列が空白以外の場合
.Attachments.Add Cells(i, "L").Value + Cells(i, "M").Value 'ファイル①を添付
End If
If Cells(i, "N").Value <> "" Then 'N列が空白以外の場合
.Attachments.Add Cells(i, "N").Value + Cells(i, "O").Value 'ファイル②を添付
End If
End With
mymail.Display 'メールを表示
' mymail.Send 'メールを送信 ←有効にしたい場合は(’)を外してコード化
End If
Next i
Application.CutCopyMode = False 'コピーモード終了

Exit Sub 'エラーが無い場合ここまで処理を進めて抜ける
error:
Application.StatusBar = False
MsgBox "エラーが発生しました エラー番号=" & Err.Number & vbCrLf & _
"【原因が分からない場合は、管理者に連絡してください】" & vbCrLf & _
"エラーの内容は「" & Err.Description & "」です。", vbCritical

Application.CutCopyMode = False 'コピーモード終了

End Sub

Комментарии

Информация по комментариям в разработке