
Excelといえば表計算ですが、できるのはそれだけじゃありません。
『VBA』というExcelの拡張機能でプログラミングも可能なのです。
もちろんExcelさえパソコンに入っていれば、すぐにでも練習可能。
ゆえに、もうプログラミングの手前(開発環境の構築とか)で悩む必要なんてありません。
それにVBAなら情報量が豊富ですし、デバック(プログラム内のバグを改修する作業)も比較的わかりやすく、しかもつくった作品で会社のExcel業務がぐっと楽になるかもしれないのです。
ですので……
「プログラマーに興味があるけど、その前に体験してみたい……」
「会社でも使える実用的なモノをつくってみたい」
「手軽にプログラミング学習できたらなぁ……」
そんな方に『VBA』はうってつけです。
とまぁ、前置きはこれくらいにして、今日からあなたもVBAプログラマー。
さっそく何かプログラミングしてみましょう!
どこでも食っていけるWeb人間になれる【Web食いオンラインスクール】
ちなみにVBAの初心者向けサイトはネット上にたくさんありますので、基礎的な部分はそちらを参考にしてください(丸投げですみません)。
では。
いきなりですがVBAでyahooメールを使って(送信元にして)メールの送信をしてみましょう!(なんでメール?というツッコミはご容赦ください。なんとなくです)
でもその前にyahooメールの設定を変更する必要があります。
yahooメールを開いて、設定(歯車のマーク)をクリックしてください。

次にIMAP/POP/SMTPアクセスをクリックして下記のように設定を変更してください。

yahooメールの設定はこれで準備OKです。
下記がVBAのコードになります。
Option Explicit
Sub excelMail()
Dim mailObj As Object
Dim mailFrom As String
Dim mailFromPassword As String
Dim mailFromSmtp As String
Dim mailFromPort As String
Dim mailCharset As String
Dim mailTo As String
Dim mailSubject As String
Dim mailBody As String
Dim errNumber As Long
'※※は変更してください
'-------------------------------------
'※※yahooメールのアドレス(送信用)
mailFrom = "xxxxxxxxxxxxxxx@yahoo.co.jp"
'※※yahooメールのSMTPパスワード(yahooメールのパスワード)
'パスワードを数回間違えるとしばらくの間、
'SMTPサーバーに接続できなくなります
'もしそうなったら、一定時間(どのくらいかは不明)経過後、
'yahooアカウントを一旦ログアウト、再度ログインしてお試しください
mailFromPassword = "xxxxxxxxxxxxxx"
'※※宛先
mailTo = "xxxxxxxxxxxxxx@xxxxx.xxx"
'送信用メールのSMTPサーバ(yahooメール以外の場合は変更が必要)
mailFromSmtp = "smtp.mail.yahoo.co.jp"
'送信用メールのポート番号(yahooメール以外の場合は変更が必要)
mailFromPort = "465"
'メールの文字コード
mailCharset = "ISO-2022-JP"
'※※メールのタイトル
mailSubject = "テストメールその1"
'※※メールの本文
mailBody = "テストメールの本文です"
'-------------------------------------
'エラー番号
errNumber = 0
'CDOのオブジェクトを作成する
Set mailObj = CreateObject("CDO.Message")
With mailObj
'送信元
.from = mailFrom
'宛先
.to = mailTo
'件名
.subject = mailSubject
'本文
.TextBody = mailBody
'文字コード
.TextBodyPart.Charset = mailCharset
End With
With mailObj.Configuration.Fields
'SMTPのユーザー名
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = mailFrom
'SMTPのパスワード
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = mailFromPassword
'認証方法
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
'SMTPサーバの種類
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'SMTPサーバ
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = mailFromSmtp
'STMPの送信用ポート番号
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = mailFromPort
'SSLを許可
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
'設定を更新
.Update
End With
'重要度を変更
mailObj.Fields.Item("urn:schemas:mailheader:X-Priority") = 1
mailObj.Fields.Update
On Error GoTo ErrorTrap
'送信
mailObj.Send
If errNumber = 0 Then
MsgBox "メールを送信しました"
End If
'初期化
Set mailObj = Nothing
errNumber = 0
Exit Sub
ErrorTrap:
errNumber = Err.Number
MsgBox "エラーの番号:" & Err.Number
MsgBox "エラーの概要:" & Err.Description
Resume Next
End Sub
Excelというか、Excelに付属しているVBE(Visual Basic Editor)上でのみ実行可能なyahooメールを使ってメールを送信するだけのコードですが、改良すれば見た目も、機能もそれっぽくなりますよ!(^^)!
たとえば指定した日時以降にExcelファイルが更新されたらファイルを自動送信するとか。
特定のセルの値が変更されたら、その内容を自動送信するとか。
あるいはシートごとにメールのフォーマットと送信ボタンを用意しておくとか。
考え方次第で色んなことができるはずです。
結構楽しいですし、会社で一目置かれるようになるかもしれませんよ~(^^)
まずはVBAでプログラミングをやってみましょう!