質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

Q&A

解決済

1回答

4160閲覧

VBA ExcelでOutlookのメール作成画面を表示する

zzz-.-zzz

総合スコア5

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

0グッド

0クリップ

投稿2020/02/06 02:33

いつもお世話になっております。
下記の【やりたいこと】を作成したいのですが難航しており力添え頂きたいです。
以下に詳細を記載しています。

【シート内容】
Sheet1の内容
ActiveXのTextBox1,CommandButton1
C列に氏名、D列に第一メールアドレス、
E列に第二メールアドレスが存在する(約100件)
Sheet2の内容
B1にメールの件名、B2にメールの本文が記入されている

【やりたいこと】
・Sheet1のTextBox1に氏名を入力してCommandButton1をクリックしSheet1に記載されている氏名(C列)の中から同じ氏名をヒットさせる
・氏名がヒットしたらTOに第一メールアドレス(D列)、CCに第二メールアドレス(E列)、件名にSheet2の件名(B1)、本文にSheet2の本文(B2)が入力された状態でOutlookのメール作成画面が表示されるようにしたい。
・検索がヒットしなければ"存在しません"と表示する

下記の作成したコード①と②を合わせたコードを作成しようと思いましたが上手くいかなかったので一旦、別々のコードを作ってみました。
作成したコード①と②を合わせたいです。初心者なので間違っているコードがあると思いますがご教授お願い致します。

【作成した内容①TextBox1に入力した氏名と同じ氏名をSheet1のC列からヒットさせる】
Private Sub CommandButton1_Click()

Dim F As Variant

Set myRange = ActiveSheet.Range("C10:E100")
Set rngSearch = myRange.Find(What:=TextBox1.Value, LookAt:=xlPart)

If TextBox1 = "" Then
MsgBox "氏名を入力してください。"
Else
If Not rngSearch Is Nothing Then
rngSearch.select
Else
MsgBox "見つかりませんでした。"
End If
End If

End Sub

【作成した内容②メール作成】
Sub OUTLOOK()

Dim objOutlook As Outlook.Application
Dim objMail As Outlook.MailItem
Dim wsMail As Worksheet

Set objOutlook = New Outlook.Application
Set wsMail = ThisWorkbook.Sheets("送信内容")

Set objMail = objOutlook.CreateItem(olMailItem)

With wsMail

objMail.To = wsList.Cells(i, 4).Value
objMail.CC = wsList.Cells(i, 5).Value
objMail.Subject = .Range("B1").Value
objMail.BodyFormat = olFormatPlain
objMail.Body = .Range("B2").Value

objMail..Display
End With

Set objOutlook = Nothing
MsgBox "送信完了"

End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

とりあえず作ってみました。
C列にヒットしたら、同じ行のD、E列のメールアドレスを使うという解釈でいいんですよね。

VBA

1Private Sub CommandButton1_Click() 2 Set myRange = ActiveSheet.Range("C10:C100") 3 Set rngSearch = myRange.Find(What:=TextBox1.Value, LookAt:=xlPart) 4 5 'TextBox1の値が未入力の場合 6 If TextBox1 = "" Then 7 MsgBox "氏名を入力してください。" 8 Exit Sub 9 End If 10 11 '検索で一致するものがない場合 12 If rngSearch Is Nothing Then 13 MsgBox "見つかりませんでした。" 14 Exit Sub 15 End If 16 17 '検索結果から行数字を取得 18 Dim rowNum As Integer 19 rowNum = rngSearch.Row 20 21 Dim objOutlook As Outlook.Application 22 Dim objMail As Outlook.MailItem 23 Dim wsMail As Worksheet 24 25 'メール作成 26 Set objOutlook = New Outlook.Application 27 Set wsMail = ThisWorkbook.Sheets("送信内容") 28 Set objMail = objOutlook.CreateItem(olMailItem) 29 30 With wsMail 31 'ToにSheet1シートの検索結果行と同じD列の値を設定 32 objMail.To = Cells(rowNum, 4).Value 33 'CCにSheet1シートの検索結果行と同じE列の値を設定 34 objMail.CC = Cells(rowNum, 5).Value 35 '件名に送信内容シートのB1の値を設定 36 objMail.Subject = .Range("B1").Value 37 objMail.BodyFormat = olFormatPlain 38 '本文に送信内容シートのB2の値を設定 39 objMail.Body = .Range("B2").Value 40 'メール作成画面表示 41 objMail.Display 42 End With 43 44 Set objOutlook = Nothing 45 Set objMail = Nothing 46 'MsgBox "送信完了" 47End Sub

追記
メールアドレスの複数設定ですが、
Microsoft Outlookでメールアドレスを複数設定するやり方と同じで
セミコロンで区切ってメールアドレスを繋ぎます。
DとE列を繋げるならこんな感じです。

VBA

1objMail.To = Cells(rowNum, 4).Value & ";" & Cells(rowNum, 5).Value

投稿2020/02/06 03:34

編集2020/02/06 08:34
yureighost

総合スコア2183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zzz-.-zzz

2020/02/06 03:52

yureighost様 ご回答ありがとうございます。 このコードで問題なく理想の動きをしました。 大変勉強になりました。 ありがとうございました。
zzz-.-zzz

2020/02/06 07:26

yureighost様 この度はありがとうございました。 問題無く動作しているのですが、 TOの送信先を増やす場合についてお聞きしたい事があります。 D列とE列をTO F列をCCにする場合、E列のTOはどのように追加すれば宜しいでしょうか? 下記のコードだとE列のアドレスのみTOになりD列のアドレスはTOに入りません。 objMail.To = Cells(rowNum, 4).Value objMail.To = Cells(rowNum, 5).Value objMail.CC = Cells(rowNum, 6).Value 度重なる質問で申し訳ございませんが、ご回答頂けると幸いです。
zzz-.-zzz

2020/02/06 09:47

yureighost様 ご回答ありがとうございます。 なるほど。Outlook の方式で書けば良かったのですね。 大変勉強になりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問