VBA ExcelからGmailでメールを送信する

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 7月 4, 2022

このチュートリアルでは、VBAを使用してExcelからGmailでメールを送信する方法を紹介します。

Microsoft CDOリファレンスを追加する

ExcelからGmailでメールを送信するためには、まず、CDO参照ライブラリをExcelプロジェクトに追加する必要があります。 VBAエディタで、[ツール]>[リファレンス]をクリックします。

vba outlook add reference 参照設定

Microsoft CDO Referenceを検索し、OKをクリックします。

vba gmail cdo reference 参照設定

GMailで電子メールを送信する

ExcelからGmailでメールを送るには、まずCDOオブジェクトを宣言する必要があります。(Dim gMail as CDO.Message

次に、メッセージのSSL認証を設定します。 つまり、メールを正しく送信するために、SMTPサーバーとポートの詳細、ユーザー名とパスワードを設定する必要があります。

以下のコードでは、Excel関数の冒頭でこのような設定が必要です。 メールの受信者(strTo)と件名(strSubject)は必要ですが、メールのCCと本文はオプションの変数にすることができます。

Function CreateEmail(strTo As String, strSubject As String, Optional strCC As String, Optional strBody As String)

'CDOオブジェクトを作成する 
   Dim gMail As CDO.Message 
   Set gMail = New CDO.Message

'SSL認証を有効にする 
   gMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True

'SMTP認証の有効化=trueにする (1) 
   gMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1

'SMTPサーバーとポートの設定 詳細 
   gMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
   gMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
   gMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 

'自分のgmailアカウントのユーザー名とパスワードをここに設定する
    gMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "johnsmith@gmail.com" 
   gMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "*****" 

'設定フィールドを更新する 
   gMail.Configuration.Fields.Update

これができれば、メールを作成し、関数を完成させることができます。

'メールのプロパティと送信するファイルを設定する 
   With gMail 
      .Subject = strSubject
      .From = "stitchmel@gmail.com" 
      .To = strTo 
      .TextBody = strBody 
   End With
'メール送信 
   gMail.Send
End Function

次に、次のコードで関数を呼び出すことができます。

Sub SendEmail
'メールの本文を作成
Dim strText as string
   strText = "おはようございます。  お元気ですか - これはテストメールです"
'関数の引数を入力する - CCは空白のままなので、プレースホルダとしてカンマを置く
   Call CreateEmail("jim.smith@gmail.com", "テストメール", , strText)
End Sub

GMailでワークブックを送信する

GMail でワークブックを添付して送信するには、上記の関数とほぼ同じものを作成し、いくつかの追加を行います。 ワークブックを選択するためのコードを追加し、選択したファイルをメールに添付する必要があります。 ここでは、Microsoft OfficeFileDialogコマンドを使用して送信するファイルを選択し、次に電子メールのAddAttachmentプロパティを使用してファイルを添付ファイルとして追加します。

Function SendWorkbook(strTo As String, strSubject As String, Optional strCC As String, Optional strBody As String) As Boolean
On Error Goto eh:

'CDOオブジェクトを作成する
   Dim gMail As CDO.Message
   Set gMail = New CDO.Message

'SSL認証を有効にする
   gMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True

'SMTP認証の有効化=trueにする (1)
   gMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1

'SMTPサーバーとポートの設定 詳細
   gMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
   gMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
   gMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

'自分のgmailアカウントのユーザー名とパスワードをここに設定する
   gMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "johnsmith@gmail.com"  
   gMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "*****"

'設定フィールドを更新する
   gMail.Configuration.Fields.Update

'マイクロソフトのファイルダイアログボックスで送信するファイルを選択する
   Dim strFileToSend As String
   Dim dlgFile As FileDialog
   Dim strItem As Variant
   Dim nDlgResult As Long
   Set dlgFile = Application.FileDialog(msoFileDialogFilePicker)
'Excelとcsvファイルのみをフィルタリングする
   dlgFile.Filters.Add "Excelファイル", "*.csv; *.xls; *.xlsx; *.xlsm"
   nDlgResult = dlgFile.Show
   If nDlgResult = -1 Then
      If dlgFile.SelectedItems.Count > 0 Then
         For Each strItem In dlgFile.SelectedItems
             strFileToSend = strItem
         Next strItem
      End If
   End If
'メールプロパティと送信ファイルの設定
   With gMail
     .Subject = strSubject
     .From = "stitchmel@gmail.com"
     .To = strTo
     .TextBody = strBody
'選択したファイルを添付ファイルとして追加する
     .AddAttachment strFileToSend
   End With
'メール送信
   gMail.Send
   SendWorkbook= True
   Exit Function
eh:
   SendWorkbook = False
End Function

設定ポート25が機能しない場合、”The transport failed to connect to the server”というエラーが表示されることがあります。

上記の関数は、以下の手順で呼び出すことができます。

Sub SendMail()
   Dim strTo As String
   Dim strSubject As String
   Dim strBody As String
'変数に値を入れる
   strTo = "jon.smith@gmail.com"
   strSubject = "添付されたファイナンスファイルをご覧ください".
   strBody = "ここにメール本文のテキストが入ります"
'電子メールを送信する関数を呼び出す
   If SendWorkbook(strTo, strSubject, , strBody) = True Then
      Msgbox "電子メールの作成に成功しました"
   Else
      Msgbox "電子メールの作成に失敗しました!"
   End If
End Sub

送信するファイルを選択するように要求されます。 このコードは、フィルターが「*.csv; *.xls; *.xlsx; *.xlsm」であるため、Excelファイルに限定されていますが、Wordでもこのコードを使用でき、フィルターを適宜変更することができます。

vba gmail select file

ファイルを選択し、[開く]をクリックします。 メールの送信に成功すると、次のようなメッセージが表示されます。

vba gmail success

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples