【Excel VBA】If Elseとは違う条件式(Select Case)について
エンジニアのIMMRです。Excel VBAの条件式には、以前に説明したExcel VBA 条件式(If Else)とこれから説明するSelect Caseの二つあります。1.従来のIf Else条件式If Elseは条件に合った時は処理Aを、条件に合わなかったら処理Bを実行します。では、下記のようなデータがあり、複数の条件があるとします。If Elseを使用して作成すると2種類の方法が浮かぶと思
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
こんにちは。IMMRです。
Excel VBAでは、MicrosoftのOutlookの操作も出来ます。また、添付資料を付けてメール作成も出来ます。
以前にご説明した「【Excel VBA】フォルダー内のファイル名を全て取得する方法」を行うことで
より、効率的に選択した資料を添付してメールを作成することが出来ます。その方法について説明してきます。
こちらでは、MicrosoftのOutlookを操作してメールを作成します。
そのため、Outlookがダウンロードされていることが前提になります。
ExcelのVBAでMicrosoftのOutlookを操作するには、VBAの詳細の設定が必要です。
下記のように「ツール」→「詳細設定を選択してください」 そうすると詳細設定画面が表示されます。
図1 詳細画面の表示方法
↓
図2 詳細設定画面
そして、「Microsoft Office 16.0 Object Library」「Microsoft Outlook 16.0 Object Library」を
選択(レ点を入れる)してOKを押します。
※選択する2つは、同じものに見えますが名前が違います。※OfficeかOutlookです。
図3 選択する詳細設定1
図4 選択する詳細設定2
そして、図1で行ったように再度、詳細設定画面を表示して、
「Microsoft Office 16.0 Object Library」「Microsoft Outlook 16.0 Object Library」にチェックがついているか確認します。
図5 詳細設定画面
メールを作成するのに記述するのは、大きく分けて2つです。
①メールを操作するためのオブジェクトの作成
②作成するメールの詳細
です。
コード①
Dim myOL As New Outlook.Application
Dim myMail As Outlook.MailItem
Set myMail = myOL.CreateItem(olMailItem)
Dim myOL As New Outlook.Application
・Outlook型の変数です
Dim myMail As Outlook.MailItem
・メールを表す型の変数です
Set myMail = myOL.CreateItem(olMailItem)
・メールを表す型の変数にCreateItemメソッドをsetします。 ※CreateItemはメールを操作するオブジェクトです
コード②-1
myMail.To = "xxxxx"
myMail.CC = "xxxxx"
myMail.BCC = "xxxxx"
myMail.Subject = "xxxxx"
myMail.Body = "xxxxx"
myMail.BodyFormat = "xxxxx"
myMail.Attachments.Add Source:="xxxxx"
myMail.Display
※「①メールを操作するためのオブジェクトの作成」で記述した「Set myMail = myOL.CreateItem(olMailItem)」の続きです。
myMail.To = "xxxxx" ※宛先者のメールアドレスを設定
myMail.CC = "xxxxx" ※CCのメールアドレスを設定
myMail.BCC = "xxxxx" ※BCCのメールアドレスを設定
myMail.Subject = "xxxxx" ※メールの件名を設定
myMail.Body = "xxxxx" ※メール本文を設定
myMail.BodyFormat = xxxxx ※メール本文の形式を設定
メールの形式の設定は下記のとおりです。
メール形式 | 内容 |
---|---|
HTML | olFormatHTML |
テキスト | olFormatPlain |
リッチ テキスト | olFormatRichText |
メール形式(リッチテキスト)で作成するためには、myMail.BodyFormat = olFormatRichTextとします。
myMail.Attachments.Add Source:="xxxxx" はメールに添付する資料です。
もちろん、"C:\VBA\aaa.txt"といった感じで直接記述しても問題ありませんが、
添付資料が異なると毎回直す必要が出てきます。それだと手間がかかるので
そんな時は、ダイアログボックスを使って資料を選択するという方法が便利です。
詳しい方法は下記を参照。
myMail.Display では作成したメールを表示します。作成したものを送信する前の状態です。
作成したメールを目で確認して、最後にOutlook側の送信ボタンを押すという感じです。
確認もしないで送信したい場合は、「myMail.Send」を使用します。※ちょっと怖い感じがありますけど(汗
また、「コード②-1」のサンプルコードは、
下記のコードのようにWithステートメントを使用してオブジェクトを省略することが出来ます。
コード②ー2
With myMail
.To = "xxxxx"
.CC = "xxxxx"
.BCC = "xxxxx"
.Subject = "xxxxx"
.Body = "xxxxx"
.BodyFormat = "xxxxx"
.Attachments.Add Source:="xxxxx"
.Display
End With
動作としてはコード②-1とコード②ー2は同じです。
ただし、オブジェクトが省略されているのでスッキリした構造になっています。
上記、コードを直接入力してもメールを作成することは出来ますが、見た目をツールのようにするため作成しました。
作成したブックを以下のようになっています。
図6 ブック(メールを作成する)
宛先、件名、本文等メールに記載したい欄をD3~D7、D17に作成したので
入力した文字等よりメールが作成されるようになっています。
メール形式は、3種類あると説明しました。
そのため、下記のようにプルダウンにして、選択出来るようになっています。
図7 ブック(メール形式)
添付資料ですが、ブックには直接記載していません。
「作成」ボタンを押すとダイアログボックスが表示され、そこで選択された資料が添付されます。
下記は、添付資料が投稿してあるフォルダーです。
図8 添付資料を選択するフォルダー
メールを作成し、選択した資料を添付するサンプルコードを作成します。
2.資料を添付したメールを作成する方法で説明した
「コード①」「コード②ー2」と
3.資料を添付したメールを作成するブックとサンプルコードで説明した
「図6 ブック(メールを作成する)」「図7 ブック(メール形式)」「図8 添付資料を選択するフォルダー」より作成した
サンプルコードは以下になります。
サンプルコード
Sub test26()
'添付する資料の名前
Dim Filename As String
'Outlook型の変数
Dim myOL As New Outlook.Application
'メールを表す型の変数
Dim myMail As Outlook.MailItem
'添付資料を選択するダイアログボックスを表示する
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = "C:\〇△プロジェクト"
If .Show = 0 Then Exit Sub
Filename = .SelectedItems(1)
End With
'CreateItemメソッドはメールを操作するオブジェクト
Set myMail = myOL.CreateItem(olMailItem)
With myMail
'メールの宛先者にメールアドレスを設定
.To = Range("D3")
'メールのCCにメールアドレスを設定
.CC = Range("D4")
'メールのBCCにメールアドレスを設定
.BCC = Range("D5")
'メールの件名を設定
.Subject = Range("D6")
'本文を記入
.Body = Range("D7")
'メール本文の形式を選択する。
Select Case Range("D17")
Case "HTML"
.BodyFormat = olFormatHTML
Case "テキスト"
.BodyFormat = olFormatPlain
Case "リッチ テキスト"
.BodyFormat = olFormatRichText
End Select
'メールに資料を添付する。
.Attachments.Add Source:=Filename
'表示する
.Display
End With
End Sub
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = "C:\〇△プロジェクト"
If .Show = 0 Then Exit Sub
Filename = .SelectedItems(1)
End With
ダイアログボックスで選択されたファイルをFilename に格納します。
そして、「.Attachments.Add Source:=Filename」として、先ほど選択したファイルが
メールに添付されます。
Select Case Range("D17")
Case "HTML"
.BodyFormat = olFormatHTML
Case "テキスト"
.BodyFormat = olFormatPlain
Case "リッチ テキスト"
.BodyFormat = olFormatRichText
End Select
メール本文をブックで選択されたもので分岐するように作成しています。
"HTML"なら.BodyFormat = olFormatHTML
"テキスト"なら.BodyFormat = olFormatPlainna
"リッチ テキスト"なら.BodyFormat = olFormatRichText
という感じです。
では、実際に実行して、資料を添付したメールを作成することが出来るか確認します。
上記、サンプルコードを使用します。
そして、ブックには、以下のように記載しています。
図9 ブック(必要事項の記載)
「宛先」~「メール形式」までを記載しました。
では実際に「作成」ボタンを押して、サンプルコードを実行します。
↓
実行したらまず、下記のように添付資料を選択するためのダイアログボックスが表示されます。
※ここでは「データemb076xte」を選択します。
図10 ダイアログボックス
下記のようにブックに入力した項目および選択した資料が添付されたメールが作成されます。
図11 作成されたメール
以下のようにメール形式も「リッチテキスト」になっています。
図12 作成されたメールの書式設定
メール作成および選択した資料を添付することが出来ました。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート