VBAスクリプトを使用してExcelスプレッドシートから電子メールを送信する方法

VBAスクリプトを使用してExcelスプレッドシートから電子メールを送信する方法

Microsoft Excelから電子メールを送信するには、いくつかの簡単なスクリプトのみが必要です。この機能をスプレッドシートに追加すると、Excelで達成できることを実際に強化できます。





プログラミングの知識を必要とせずに、VBAスクリプトと同じことを実行できる、多くの優れたExcelマクロについて説明しました。ただし、すべてのPC情報を含むスプレッドシートレポートを作成するなど、VBAでしか実行できない高度なことがたくさんあります。





このチュートリアルをビデオとして見たいですか?私たちはあなたをカバーしました!





Excelからメールを送信する理由

MicrosoftExcel内から電子メールを送信する理由はたくさんあります。

ドキュメントやスプレッドシートを毎週更新するスタッフがいて、それらの更新が完了したときに電子メール通知を受け取りたい場合があります。または、連絡先のスプレッドシートがあり、一度にすべての連絡先に1つの電子メールを送信したい場合があります。



あなたはおそらく、Excelからの電子メールブロードキャストのスクリプト作成が複雑になるだろうと考えているでしょう。そうではありません。

この記事の手法では、ExcelVBAで長い間利用されてきた機能を利用します。 コラボレーションデータオブジェクト (CDO)。





CDOは、OSの非常に初期の世代からWindowsで使用されているメッセージングコンポーネントです。以前はCDONTSと呼ばれていましたが、Windows 2000およびXPの登場により、「CDO forWindows2000」に置き換えられました。このコンポーネントは、Microsoft WordまたはExcel内のVBAインストールに既に含まれており、すぐに使用できます。

このコンポーネントを使用すると、VBAを使用してWindows製品内から電子メールを非常に簡単に送信できます。この例では、ExcelのCDOコンポーネントを使用して、特定のExcelセルから結果を配信する電子メールを送信します。





ステップ1:VBAマクロを作成する

最初のステップは、[Excel開発者]タブに移動することです。

[開発者]タブ内で、をクリックします 入れる [コントロール]ボックスで、コマンドボタンを選択します。

シートに描画し、をクリックして新しいマクロを作成します マクロ 開発者リボンで。

クリックすると 作成 ボタンをクリックすると、VBAエディターが開きます。

次の場所に移動して、CDOライブラリへの参照を追加します。 ツール >> 参考文献 エディターで。

見つかるまでリストを下にスクロールします Windows2000ライブラリ用のMicrosoftCDO 。チェックボックスをマークしてクリックします わかった

クリックすると わかった 、スクリプトを貼り付ける関数の名前をメモします。後で必要になります。

ステップ2:CDOの「From」フィールドと「To」フィールドを設定する

これを行うには、最初にメールオブジェクトを作成し、メールの送信に必要なすべてのフィールドを設定する必要があります。

フィールドの多くはオプションですが、 から フィールドは必須です。

なぜファイルエクスプローラーはとても遅いのですか
Dim CDO_Mail As Object
Dim CDO_Config As Object
Dim SMTP_Config As Variant
Dim strSubject As String
Dim strFrom As String
Dim strTo As String
Dim strCc As String
Dim strBcc As String
Dim strBody As String
strSubject = 'Results from Excel Spreadsheet'
strFrom = 'rdube02@gmail.com'
strTo = 'rdube02@gmail.com'
strCc = ''
strBcc = ''
strBody = 'The total results for this quarter are: ' & Str(Sheet1.Cells(2, 1))

これのすばらしい点は、完全な電子メールメッセージをカスタマイズして、それに割り当てることができる任意の文字列を作成できることです。 strBody 変数。

を使用してメッセージのコンポーネントをつなぎ合わせます 上記のように、MicrosoftExcelシートのデータを電子メールメッセージに直接挿入する文字列。

手順3:外部SMTPを使用するようにCDOを構成する

コードの次のセクションでは、外部SMTPサーバーを使用して電子メールを送信するようにCDOを構成します。

この例は、Gmailを介した非SSLセットアップです。 CDOはSSLに対応していますが、それはこの記事の範囲外です。 SSLを使用する必要がある場合、これ Githubの高度なコード 助けられる。

Set CDO_Mail = CreateObject('CDO.Message')
On Error GoTo Error_Handling
Set CDO_Config = CreateObject('CDO.Configuration')
CDO_Config.Load -1
Set SMTP_Config = CDO_Config.Fields
With SMTP_Config
.Item('http://schemas.microsoft.com/cdo/configuration/sendusing') = 2
.Item('http://schemas.microsoft.com/cdo/configuration/smtpserver') = 'smtp.gmail.com'
.Item('http://schemas.microsoft.com/cdo/configuration/smtpauthenticate') = 1
.Item('http://schemas.microsoft.com/cdo/configuration/sendusername') = 'email@website.com'
.Item('http://schemas.microsoft.com/cdo/configuration/sendpassword') = 'password'
.Item('http://schemas.microsoft.com/cdo/configuration/smtpserverport') = 25
.Item('http://schemas.microsoft.com/cdo/configuration/smtpusessl') = True
.Update
End With
With CDO_Mail
Set .Configuration = CDO_Config
End With

ステップ4:CDOセットアップを完了する

電子メールを送信するためのSMTPサーバーへの接続を構成したので、あなたがしなければならないのは、 CDO_Mailオブジェクト 、およびを発行します 送信 指図。

これを行う方法は次のとおりです。

CDO_Mail.Subject = strSubject
CDO_Mail.From = strFrom
CDO_Mail.To = strTo
CDO_Mail.TextBody = strBody
CDO_Mail.CC = strCc
CDO_Mail.BCC = strBcc
CDO_Mail.Send
Error_Handling:
If Err.Description '' Then MsgBox Err.Description

Outlookメールオブジェクトを使用する場合に発生する可能性のあるポップアップボックスやセキュリティ警告メッセージは表示されません。

CDOは単に電子メールをまとめ、SMTPサーバー接続の詳細を利用してメッセージを送信します。これは、電子メールをMicrosoftWordまたはExcelVBAスクリプトに組み込む最も簡単な方法です。

コマンドボタンをこのスクリプトに接続するには、コードエディターに移動して、をクリックします。 Sheet1 そのワークシートのVBAコードを表示します。

上記のスクリプトを貼り付けた関数の名前を入力します。

ストップコードシステムスレッド例外は処理されません

受信トレイで受信したメッセージは次のようになります。

ノート :次のようなエラーが発生した場合 トランスポートがサーバーに接続できませんでした 、下にリストされているコード行に正しいユーザー名、パスワード、SMTPサーバー、およびポート番号を入力したことを確認してください SMTP_Configを使用

さらに進んで、プロセス全体を自動化する

ボタンを押すだけでExcelからメールを送信できるのは良いことです。ただし、この機能を定期的に使用することをお勧めします。その場合は、プロセスを自動化するのが理にかなっています。

そのためには、マクロを変更する必要があります。 Visual Basic Editorに移動し、まとめたコード全体をコピーして貼り付けます。

次に、 このワークブック から 計画 階層。

コードウィンドウの上部にある2つのドロップダウンフィールドから、[ ワークブック 選択します 開ける [メソッド]ドロップダウンから。

上記のメールスクリプトをに貼り付けます プライベートサブWorkbook_Open()

これにより、Excelファイルを開くたびにマクロが実行されます。

次に、開きます タスクスケジューラ

このツールを使用して、定期的にスプレッドシートを自動的に開くようにWindowsに要求します。その時点で、マクロが開始され、電子メールが送信されます。

選択する 基本タスクの作成... から アクション メニューを表示し、ウィザードに到達するまでウィザードを進めます。 アクション 画面。

選択する プログラムを開始する をクリックします

使用 ブラウズ ボタンをクリックして、コンピューター上のMicrosoft Excelの場所を検索するか、パスをコピーしてに貼り付けます。 プログラム/スクリプト 分野。

次に、MicrosoftExcelドキュメントへのパスをに入力します 引数を追加する 分野。

ウィザードを完了すると、スケジュールが設定されます。

将来数分間アクションをスケジュールし、機能していることを確認できたらタスクを修正して、テストを実行する価値があります。

ノート :マクロが正しく実行されるように、セキュリティセンターの設定を調整する必要がある場合があります。

これを行うには、スプレッドシートを開いて次の場所に移動します ファイル >> オプション >> トラストセンター

ここから、をクリックします トラストセンターの設定 、次の画面でラジオダイヤルをに設定します ブロックされたコンテンツに関する情報を表示しないでください

MicrosoftExcelをあなたのために働かせる

Microsoft Excelは非常に強力なツールですが、それを最大限に活用する方法を学ぶのは少し怖いかもしれません。あなたが本当にソフトウェアをマスターしたいのなら、あなたはする必要があります VBAに慣れている 、そしてそれは簡単な作業ではありません。

Windows10を安く入手する方法

しかし、結果はそれ自体を物語っています。 VBAの経験が少しあれば、すぐにMicrosoft Excelに基本的なタスクを自動的に実行させることができるようになり、より差し迫った問題に集中する時間を増やすことができます。

VBAで専門知識を構築するには時間がかかりますが、それに固執できれば、すぐに労力の成果がわかります。

開始するのに最適な場所の1つは、権威あるものです ExcelでVBAを使用するためのチュートリアル 。それが完了すると、Excelからメールを送信するこの簡単なスクリプトは子供の遊びのように感じられます。

共有 共有 つぶやき Eメール キヤノン対ニコン:どちらのカメラブランドが優れていますか?

キヤノンとニコンは、カメラ業界で最も有名な2社です。しかし、どのブランドがより良いカメラとレンズのラインナップを提供していますか?

次を読む
関連トピック
  • 生産性
  • プログラミング
  • メールのヒント
  • プログラミング
  • VisualBasicプログラミング
  • マイクロソフトエクセル
  • MicrosoftOfficeのヒント
著者について ライアン・デューブ(942件の記事が公開されました)

ライアンは電気工学の理学士号を取得しています。彼は自動化エンジニアリングで13年間、ITで5年間働いており、現在はアプリエンジニアです。 MakeUseOfの元編集長であり、データの視覚化に関する全国会議で講演され、全国のテレビやラジオで取り上げられました。

RyanDubeのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください