Excelからメール作成

‘このVBAプロシージャは図形がクリックされたときに呼び出されるようにする必要があります。Excelには直接的な「図形がクリックされた」イベントは存在しないため、図形にマクロを割り当てる方法を使います。次の手順を実行してください:

‘図形を右クリックし、「マクロの割り当て…」を選択します。
‘ダイアログボックスで、このマクロ(例えば「CreateAndMailWorkbook」)を選択し、「OK」をクリックします。
‘これで図形がクリックされると、上記のマクロが実行されるようになります。

‘このコードは、新しいワークブックを作成し、それをOutlookメールの添付ファイルとして設定します。このメールは宛先、件名、本文が設定されています。その後、このメールを表示します(注意:このコードではメールは送信されません。送信するには、.Displayの代わりに.Sendを使用してください)。

‘=========================================================
‘新しいExcelワークブックを作成し、それを添付ファイルとするOutlookメールを作成するサブルーチンを定義します。
Sub CreateAndMailWorkbook()

Dim oldWB As Workbook
Dim newWB As Workbook
Dim savePath As String
Dim fileName As String
Dim passWord As String
Dim rng As Range
Dim oApp As Object
Dim oMail As Object
Dim mailSubject As String
Dim mailBody As String
Dim mailTo As String
Dim dt As String

‘本日の日付をYYMMDDの形式で取得します。
dt = Format(Date, “YYMMDD”)

‘各種詳細を設定します。
fileName = “ここにファイル名_” & dt & “.xlsx” ‘新しいワークブックの名前を設定します。
passWord = “PASSWORD” ‘新しいワークブックのパスワードを設定します。
mailTo = “hogehoge@gmail.com” ‘メールの宛先を設定します。
mailSubject = “ここにメール件名_” & dt ‘メールの件名を設定します。
mailBody = “メール本文” ‘メールの本文を設定します。

‘既存のワークブックと新しいワークブックを設定します。
Set oldWB = ThisWorkbook ‘現在のワークブックをoldWBとして設定します。
oldWB.Sheets(2).Copy ‘現在のワークブックの2番目のシートをコピーします。
Set newWB = ActiveWorkbook ‘新しく作成されたワークブックをnewWBとして設定します。

‘新しいワークブックをパスワード付きで保存します。
savePath = oldWB.Path & “\” & fileName ‘保存先のパスを設定します。
newWB.SaveAs savePath, Password:=passWord ‘新しいワークブックを指定したパスにパスワードを設定して保存します。
newWB.Close ‘新しいワークブックを閉じます。

‘Outlookメールを作成し、添付ファイルを追加します。
Set oApp = CreateObject(“Outlook.Application”) ‘Outlook.Applicationオブジェクトを作成します。
Set oMail = oApp.CreateItem(0) ‘新しいメールアイテムを作成します。
With oMail
.To = mailTo ‘メールの宛先を設定します。
.Subject = mailSubject ‘メールの件名を設定します。
.Body = mailBody ‘メールの本文を設定します。
.Attachments.Add savePath ‘保存した新しいワークブックをメールの添付ファイルとして追加します。
.Display ‘メールを表示します(.Sendを使用してメールを送信することもできます)。
End With

‘使用したオブジェクトをクリアします。
Set oMail = Nothing
Set oApp = Nothing
Set newWB = Nothing
Set oldWB = Nothing

End Sub

‘=========================================================