![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
VBAでメール作成(選択した複数の宛先へのメール作成)
ExcelのVBAを使用してOutlookのメールを作成したいのですが、初心者のため上手く動きません。
想定している動作は別シート("メールアドレス")に入力し
てあるアドレスをインボックスで複数選択しそのアドレスを宛先に追加したいです。
1人分のアドレスなら取得できますが、複数取得ができません。。
詳しい方いらっしゃいましたらご教示ください。
携帯で送っているので一部文字化けしてます。
すみません。。
Sub Test()
'Outlookオブジェクトの変数宣言
Dim outlookObj As Outlook.Application
Set outlookObj = New Outlook.Application
Dim MM, M, N As Range
'メール送信用のオブジェクト作成
Dim mailObj As Outlook.MailItem
Set mailObj = outlookObj.CreateItem(olMailItem)
Set MM = Application.InputBox(Prompt:="アドレス選択して下さい", Type:=8)
Set M = Worksheets("メール内容").Cells(5, 2) '件名 選択
Set N = Worksheets("メール内容").Cells(9, 2) '本文 選択
'メール送信内容の作成
With mailObj
.To = MM 'メール宛先
.Subject = M 'メール件名
.Body = N 'メール本文
.BodyFormat = olFormatPlain 'メール形式に設定
.Display
End With
End Sub
No.1ベストアンサー
- 回答日時:
こんばんは、
>別シート("メールアドレス")に入力してあるアドレスを
>インボックスで複数選択しそのアドレスを宛先に追加したいです。
1人分のアドレスなら取得できますが、複数取得ができません。
そうですね。この場合、Application.InputBoxは不向きかもしれません。
ちなみにOutlookの宛先のアドレスを複数につなげると xxxxx@xxxx.com; yyyyyyy@yyyyyy.ne.jp の
ようになります。 ; セミコロン、半角スペース だったかと。。
また、文字数制限もありますので、この方法の場合は注意が必要です。
セルの値を全て宛先アドレスにするならセル範囲をForなどで繰り返し処理をすれば良いです。
セルの値を直接の場合
For i = 1 To 20
MM = MM & "; " & cells(i,1).value
Next i
MM = Right(MM, Len(MM) - 1)
どうしてもApplication.InputBoxなら、
Rangeを受け取ってセルの値を加工するコードが必要になります。
セル選択時、飛びセルを選択する場合は , 入力です。では、
InputBoxで選択したセル範囲の値を;で繋げる。(セルの値は、メールアドレス)
Cbm_Value_Selectの内容をSet MM = Application.InputBox(Prompt:="アドレス選択して下さい", Type:=8)
部分に置換 Function ProcessingFucは、必要です。
Application.InputBoxの場合
Sub Cbm_Value_Select()
Dim rng As Range, MM As String
Set rng = Application.InputBox(Prompt:="アドレス選択して下さい", Type:=8)
If Not rng.Cells.Count > 0 Then Exit Sub
MM = ProcessingFuc(rng, rng.Cells.Count)
MM = Right(MM, Len(MM) - 1) ’アドレスが加工され変数に代入されます。
MsgBox (MM) 'テスト用
End Sub
Function ProcessingFuc(rng As Range, n As Long) As String
Dim i As Long
For i = 1 To n
ProcessingFuc = ProcessingFuc & "; " & rng(i)
Next
End Function
あと、気になる点として、、
Dim MM, M, N As Range
これ全てString 型で良いのでは? 使われ方が文字列
Dim MM As String, M As String, N As String
ただし新規に
Dim rng As Range が必要
更に別方法としては、選んで登録したい場合は、UserFormを使う?
例えば添付図のような感じで、、
インデックス1のシートA1からA20にある値(メールアドレス)をリストボックスに登録して
クリックで選択(複数)し、実行ボタンで変数MMにアドレスをつなげ代入します。
UserFormの中のコードは、、
Private Sub UserForm_Initialize()
ListBox1.MultiSelect = fmMultiSelectMulti
ListBox1.List = Sheets(1).Range("A2:A20").Value
MsgBox "登録件数:" & ListBox1.ListCount 'テスト
End Sub
Private Sub CommandButton1_Click()
Dim i As Long, MM As String
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
MM = MM & "; " & ListBox1.List(i)
End If
Next i
MM = Right(MM, Len(MM) - 1)
MsgBox MM 'テスト
Unload Me
End Sub
注)重要:UserFormの場合、変数 MMの扱いは調べてください。
上記コードは、内容を理解し使ってください。
エラー処理は、適所行ってください。
![「VBAでメール作成(選択した複数の宛先へ」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/e/542917474_5e70c916c6bf4/M.png)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBA初心者です。 2 2022/10/10 11:52
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Outlook(アウトルック) Excel表のメールアドレスリストからoutlookの宛先を設定、メールを送信する方法 2 2022/09/16 05:29
- その他(Microsoft Office) VBA メール送信済で実行されるはずが、実行されない時があります。 2 2023/02/02 14:05
- その他(Microsoft Office) outlookで宛先が異なるメールを一括送信する方法 outlookで200人それぞれをtoに指定し 2 2023/08/03 21:24
- Visual Basic(VBA) Excel・ユーザーフォームの情報を受け渡したい 4 2022/06/08 10:11
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
アクセスVBAでメールを送信(複数宛先・添付)
その他(パソコン・スマホ・電化製品)
-
VBAのフォント変更(エクセルからoutlookのメール作成において)
Visual Basic(VBA)
-
Excel VBA Outlookメール作成について
Excel(エクセル)
-
-
4
VBAでメール作成(選択した複数の宛先へのメール作成) ExcelのVBAを使用してOutlookの
Excel(エクセル)
-
5
EXCELマクロで複数のEMAIL宛先を指定
Visual Basic(VBA)
-
6
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
9
【Excel】 VBAを使って毎回名前が変わるファイルを添付してメール送信したい。
Excel(エクセル)
-
10
VBA 数式を残して値をクリアについて
Excel(エクセル)
-
11
VBA エクセル メール送信 ハイパーリンクの貼り方
その他(Microsoft Office)
-
12
VBA 半角スペースを入れるには...
その他(Microsoft Office)
-
13
VBAで「致命的なエラー」が出ました。どのくらい致命的なんでしょうか?
Access(アクセス)
-
14
エクセルVBAからアクセスフォームについて
Access(アクセス)
-
15
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
16
エクセルVBAでOutlookメールの書式を変える
Excel(エクセル)
-
17
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
18
Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを
Visual Basic(VBA)
-
19
MS ACCESSを利用して複数へのメール送信
Access(アクセス)
-
20
エクセル:一般的に何メガくらいの容量なら安全ですか?
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
白血球が多いとどんな心配があ...
-
彼女のことが好きすぎて彼女の...
-
EXCELで条件付き書式で空白セル...
-
至急!尿検査前日にオナニーし...
-
甲状腺が腫れているが血液検査...
-
検便についてです。 便は取れた...
-
値が入っているときだけ計算結...
-
これって喉仏ですか? 私は女性...
-
2つの数値のうち、数値が小さい...
-
勃起する時って痛いんですか? ...
-
【Excelで「正弦波」のグラフを...
-
尿検査前日に自慰行為した時の...
-
エクセルのグラフで、値0のとき...
-
精子が黄色?
-
MIN関数で空白セルを無視したい...
-
リンク先のファイルを開かなく...
-
EXCELで式からグラフを描くには?
-
Excelで""で囲む方法
-
小数点以下を繰り上げたものを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
至急!尿検査前日にオナニーし...
-
白血球が多いとどんな心配があ...
-
尿検査前日に自慰行為した時の...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
尿検査の前日は自慰控えたほう...
-
精子が黄色?
-
中出しをするとお腹が痛い・・・。
-
EXCELで条件付き書式で空白セル...
-
口の中に黒い血の塊
-
これって喉仏ですか? 私は女性...
-
2つの数値のうち、数値が小さい...
-
納豆食べた後の尿の納豆臭は何故?
-
EXCELで式からグラフを描くには?
-
小数点以下を繰り上げたものを...
-
excelでsin二乗のやり方を教え...
-
エクセル指定した範囲からラン...
おすすめ情報