相手のアドレス、名前、用件が1行毎に書かれたエクセルファイルがあります。
差込印刷のように、定型文の要所要所にエクセルの各セルの値を埋め込んだメールを一括して送信したいのですが、やり方がわかりません。
たとえば、10行あれば、メールが10箇所に送信したいのです。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>「具体的なVBA」が書けません(悲)。


>そのまま使えるソースやフリーソフトご存知ならお教えください。
 そうですねぇ。フリーソフトならあるかも知れませんが、大した VBA ではありませんので、ご自分で書かれてもよいかと存じます。

 先ず、お使いの OS(オペレーションシステム)に依存します。
※OS が Windows 2000 より前のバージョンでしたら、この方法は無効です!! ここで読み終えて、フリーソフトをお探しください。

 「そのまま使えるソース」とはお書きですが、使用条件によって当然ソース(コード)も変わってきますので、一つずつ検証をしながらコードを書いていくべきかと存じます。

 さて、本題に入りますが。。。

>相手のアドレス、名前、用件が1行毎に書かれたエクセルファイルがあります。
>差込印刷のように、定型文の要所要所にエクセルの各セルの値を
>埋め込んだメールを一括して送信したい
>10行あれば、メールが10箇所に送信したい

 例えば、1行目に「名前・相手のアドレス・用件(要所要所に埋め込む値)」という見出しがあって、「名前」がA列、「相手のアドレス」がB列、「要所要所に埋め込む値」が「用件1」C列・「用件2」D列・「用件3」E列に書かれているとするとします。
 このようなプログラムを書く時は、先ずテストを何回もしてみることが大切で、相手先にテストメールが届いては迷惑になりますので、ご自分のメールアドレスでテストします。
 そこで、2行目A列~E列に、それぞれ「あなたのお名前」・「あなたのメールアドレス」・「あああ」・「いいい」・「ううう」と入力してください。
 ここでは「あなたのお名前」は「田中太郎」、「あなたのメールアドレス」は「hoge@hoge.com」として説明いたします。
 実際にテストをされる時には本当の「あなたのお名前」・「あなたのメールアドレス」を書いてくださいね。

 ここで、送付先のメールアドレスは
Cells(2, 1).Value & "様<" & Cells(2, 2).Value & ">"
と記述することによって、「田中太郎様<hoge@hoge.com>」という値になります。
 「差込印刷のように」というのは「本文」のことかと存じますが、これは、
"定型文1" & Cells(2, 3).Value & "定型文2" & Cells(2, 4).Value & _
"定型文3" & Cells(2, 5).Value & "定型文4"
と記述することによって、「定型文1あああ定型文2いいい定型文3ううう定型文4」という値になります。

 本文の間に改行を入れたい場合は、「vbCrLf」を書いて
"定型文1" & Cells(2, 3).Value & "定型文2" & Cells(2, 4).Value & vbCrLf & _
"定型文3" & Cells(2, 5).Value & "定型文4"
と記述することによって、「
定型文1あああ定型文2いいい
定型文3ううう定型文4
」という値になります。

 さて、前振りはここまでにして、実際にメールを送信してみましょう。
 テストですので、新規ブックで試してみましょうね。
 また、本当の「あなたのお名前」・「あなたのメールアドレス」を書いてくださいね。

1)エクセルシートの1行目A列~E列に、それぞれ「名前」・「相手のアドレス」・「用件1」・「用件2」・「用件3」と入力し、2行目A列~E列に、それぞれ「あなたのお名前」・「あなたのメールアドレス」・「あああ」・「いいい」・「ううう」と入力します。
2)[Alt] + [F11] で VBE(Visual Basic Editor)を開きます。
3)[挿入(I)] - [標準モジュール(M)] で「標準モジュール」の コードウィンドウ を開きます。
4)現われたコードウィンドウに下記コードを貼り付けます。
 なお、Thunderbird のメニューの [ツール(T)] - [アカウント設定(C)] で 左側のリストの一番下にある [送信 (SMTP) サーバ] をクリックし、「あなたのメールアドレス」をクリックして、その下にある [サーバ名]、これを下記の「●●●」と差し替えてください。
 この文字列は、例えば Yahoo! メールでしたら「smtp.mail.yahoo.co.jp」のような文字列です。
 また、
oMsg.From = "あなたのお名前<あなたのメールアドレス>"
の行は、「差出人」の欄になりますので「様」を付けずに、
oMsg.From = "田中太郎<hoge@hoge.com>"
のような書式になるように、本当のお名前(会社名?)とメールアドレスで書いてください。
5)[F5] キーを押下してください。マクロが実行されます。
6)Thunderbird で [F5] キーを押下してください。
 「件名」という件名のメールがあなたから届いていたらテスト成功です。

'-------------------------------------------------------------------
Sub CDOでメール送信()
 Dim oMsg
 Set oMsg = CreateObject("CDO.Message")
 oMsg.From = "あなたのお名前<あなたのメールアドレス>"
 oMsg.To = Cells(2, 1).Value & "様<" & Cells(2, 2).Value & ">"
 oMsg.Subject = "件名"
 oMsg.TextBody = "定型文1" & Cells(2, 3).Value & "定型文2" & _
  Cells(2, 4).Value & vbCrLf & "定型文3" & Cells(2, 5).Value & "定型文4"
 oMsg.Configuration.Fields.Item("ht" & _
  "tp://schemas.microsoft.com/cdo/configuration/sendusing") = 2
' oMsg.Configuration.Fields.Item("ht" & _
  "tp://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
 oMsg.Configuration.Fields.Item("ht" & _
  "tp://schemas.microsoft.com/cdo/configuration/smtpserver") = "●●●"
 oMsg.Configuration.Fields.Item("ht" & _
  "tp://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
 oMsg.Configuration.Fields.Item("ht" & _
  "tp://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = False
 oMsg.Configuration.Fields.Update
 oMsg.Send
End Sub
'-------------------------------------------------------------------

 先ず、上記の実験をしていただいて、成功したか否かをお知らせください。
 成功した場合は、更に詳しいコードの記述法をお知らせいたします。

 なお、前回答で「Excel でお仕事!」から参照ページを呈示しましたが、私は、そこにも書いてある「実行時バインディングの方法」で行なっております。
 これにつきましては、プログラム言語が異なります(VBA ではありません)が、流用ができますので、下記をご覧ください。
●Windows標準機能とWSHを使ってメールを送信する
http://www.atmarkit.co.jp/fwin2k/win2ktips/428ws …
「Thunderbirdで一括送信」の回答画像2
    • good
    • 0
この回答へのお礼

詳しい回答ありがとうございました。
お礼遅くなりました。
お示し頂いたプログラムで、自分宛のメール1件の送信は成功しました。
でも今、時間がとれずその先に進めませんが、別の機会にチャレンジしたいと思います。
ありがとうございました。

お礼日時:2009/06/14 09:21

>お示し頂いたプログラムで、自分宛のメール1件の送信は成功しました。


 では、次のステップに進みましょう。
 これもテストですから、送信先の「メールアドレス」だけはすべてあなたの メールアドレス にしてください。
 「名前」の方は「麻生太郎」でも「バラク・オバマ」でも何でも構いません(あたなのメールアドレスで「麻生太郎様」や「バラク・オバマ様」というメールが届くだけのことです)。

【準備】
・1行目は前回答と同様です。
・3行目以降にも2行目と同じような内容を書きます(ただし、B列はすべて「あなたのメールアドレス」)。
 何行目まででも構いません。
・A列の「名前」、C・D・E列の「用件1・2・3」の欄にはそれぞれ超テキト~な内容を書いておきます。

【VBA】
>相手のアドレス、名前、用件が1行毎に書かれた
>差込印刷のように、定型文の要所要所にエクセルの各セルの値を埋め込んだ
 応用が利く様に [回答番号:No.2] の コード を元に変更箇所のみ書いてみます。

・「Dim i As Integer」の行を追加し「oMsg.to」~「oMsg.Send」までの行を
For i = 2 To Range("A1").End(xlDown).Row
Next
で挟む。

 つまり、
For i = 2 To Range("A1").End(xlDown).Row
 oMsg.to = ~~~
 ・・・・・・・・
 oMsg.Send
Next

・「Cells(2, 」をすべて「Cells(i, 」に変更する。

 以上で、2行目からA列に値の入力されている最後の行まで、「1行毎に書かれた」「相手のアドレス、名前、用件」に基づいて、「差込印刷のように」「要所要所にエクセルの各セルの値を埋め込んだメールを一括して送信」します。


 なお、
oMsg.Subject = "件名"
のところは、
oMsg.Subject = Cells(i, ~).Value  '「~」は列番号
のような記述をすれば、セルの値から個々に「件名」を設定することもできます。

 また、
oMsg.TextBody = ~~~
のところは、メール本文全体が1つのセルに格納されているような場合でしたら、例のようなまどろっこしい書き方をしなくても、
oMsg.TextBody = Cells(i, ~).Value  '「~」は列番号
で十分です。

 「oMsg.Configuration.Fields」の各行は、おまじないですので、そのまま書いておいてください。


 なおなお、「添付ファイル」がある場合には、
oMsg.AddAttachment "D:\hoge\hoge\hoge.xls"
oMsg.AddAttachment "D:\hoge\hoge.txt"
のように指定すれば、幾つでも添付ファイルを添付することができます。
 この場合も「"D:\hoge\~~"」の部分は、セルの値から引っ張ってくることもできますし、変数に格納して添付ファイル名を指定することもできます。

例1)セルの値から引っ張ってくる場合
oMsg.AddAttachment Cells(i, ~).Value

例2)変数に格納して添付ファイル名を指定する場合
Dim MyMonth As String
MyMonth = IIf(Day(Date) > 15, Format(DateAdd("m", 1, Date), "yy-mm"), Format(Date, "yy-mm"))
oMsg.AddAttachment "D:\hoge\hoge" & MyMonth & ".txt"

 この場合、今月15日までは、「D:\hoge\hoge09-06.txt」というファイルを、15日を過ぎると「D:\hoge\hoge09-07.txt」というファイルを添付します。


#お分かりにならないことがありましたら、補足質問なさってください。
    • good
    • 0

 下記をご参考に。

。。

●CDOでメール送信
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
    • good
    • 0
この回答へのお礼

応答ありがとうございます。
紹介くださったページ読んで、試してみました。
が、「VBAを自分で書けば、目的の操作が可能(?)なこと」はわかったつもりですが、「具体的なVBA」が書けません(悲)。
そのまま使えるソースやフリーソフトご存知ならお教えください。

お礼日時:2009/05/31 00:24

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBA サンダーバードのメール自動作成

いつもお世話になってます。

サンダーバードでメールを自動作成しようと思い、回答者さんのアドバイスで以下のコードを
作成しました。

【仕様】
sheet2のA列に、メールの宛先と本文の文字列が下方向に並んでおり、ループしながら宛先と本文を新規メールに送っていく。

Dim sPath As String
Dim Mailad As String
Dim Subjct As String
Dim Bodyst As String

Do Until Sheets("sheet2").Range("J" & cnt).Value = syuryono + 1

If Sheets("sheet2").Range("I" & cnt).Value = "アドレス" Then
'メルアドを取得
meruado = Sheets("sheet2").Range("A" & cnt).Value
cnt = cnt + 1

'メルアドから下の行を本文として取得
honbun = ""
Do
honbun = honbun & Sheets("sheet2").Range("A" & cnt).Value
honbun = honbun & "%0a"
cnt = cnt + 1
Loop Until Sheets("sheet2").Range("I" & cnt - 1).Value = "エンド"

'文字数カウント
a = Len(honbun)

'メール作成
sPath = """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose "
Mailad = meruado
Subjct = Sheets("説明").Range("A7").Value
Bodyst = honbun
Shell sPath & "to=" & Mailad & "," & _
"subject=""" & Subjct & """," & _
"body=""" & Bodyst & """"

Else
cnt = cnt + 1

End If
Loop

で、質問なんですが、

'メルアドから下の行を本文として取得
honbun = ""
Do
honbun = honbun & Sheets("sheet2").Range("A" & cnt).Value
honbun = honbun & "%0a"
cnt = cnt + 1
Loop Until Sheets("sheet2").Range("I" & cnt - 1).Value = "エンド"

上記の部分で本文を作っていくときに、本文中に「,」が入っていると、そこで本文が途切れてしまいます。
例えば、A2セルに「りんご」A3セルに「みかん」とある場合、変数honbunは「りんご%0aみかん」となり
メール本文は「りんご(改行)みかん」となりますが、A2セルが「りんご」A3セルが「み,かん」の場合
メール本文が「りんご(改行)み」で終わってしまいます。

正規表現?的な文字が入っていると、メーラーのbodyに渡す時に途切れちゃうのかなという感じです。

変数honbunに入っている文字列はすべてただの文字列とし、上記の例の場合にメールが途中で
途切れないようにする方法はありますでしょうか?

いつもお世話になってます。

サンダーバードでメールを自動作成しようと思い、回答者さんのアドバイスで以下のコードを
作成しました。

【仕様】
sheet2のA列に、メールの宛先と本文の文字列が下方向に並んでおり、ループしながら宛先と本文を新規メールに送っていく。

Dim sPath As String
Dim Mailad As String
Dim Subjct As String
Dim Bodyst As String

Do Until Sheets("sheet2").Range("J" & cnt).Value = syuryono + 1

If Sheets("sheet2").Range("I" & cnt).Value = "ア...続きを読む

Aベストアンサー

>Bodyst = honbun
>Shell sPath & "to=" & Mailad & "," & _
>       "subject=""" & Subjct & """," & _
>       "body=""" & Bodyst & """"

Bodyst = Replace(honbun, "&", "&")
Shell sPath & "mailto:" & Mailad & "?" & _
       "subject=""" & Subjct & """&" & _
       "body=""" & Bodyst & """"

..こんな感じではどうでしょう。
『&』つなぎにして、本文内に『&』があれば全角にしておく対処。

『,』と『&』とどちらが使用する頻度が高いかな、という点と
『,』と『&』全角にした時の違和感を考えて、そこは好みで
『,』でも構わないかと思います。

QExcelVBAでメールを作成してメーラーを起動するプログラムを作って

ExcelVBAでメールを作成してメーラーを起動するプログラムを作っているのですがうまくいかない点が2つほどあります。

(1)いろいろ条件によって文章を組み立てて、
Excelに一旦、本文を表示するところまで行ったのですが、
それをクリップボードにコピーして、
GetText関数でmailtoのbodyに渡し
メーラーが起動されるのですが、
メール本文を見るとダブルコーテーションで囲われているところがいくつかあり、
(セル内改行があったところなどが
自動的に囲われてしまうみたいで)
改行もされず本文が全部つながってしまいます。

メール本文でダブルコーテーションなしにして元の改行を入れるにはどうしたらいいのでしょうか?

(2)
bodyの本文が長いとエラーになってしまい、
メーラーが起動されません。
2千文字くらいしか入らないみたいです。

入れなければならない文言が決まっているので、
文章の文字数を減らすことはできません。

ダブルコーテーションは消して、
改行をそのまま入れて、
文章の文字数はそのままで、メーラーからを送るにはどうしたらいいか何日か悩んだのですが解決できません。

ご教示お願いします。

ExcelVBAでメールを作成してメーラーを起動するプログラムを作っているのですがうまくいかない点が2つほどあります。

(1)いろいろ条件によって文章を組み立てて、
Excelに一旦、本文を表示するところまで行ったのですが、
それをクリップボードにコピーして、
GetText関数でmailtoのbodyに渡し
メーラーが起動されるのですが、
メール本文を見るとダブルコーテーションで囲われているところがいくつかあり、
(セル内改行があったところなどが
自動的に囲われてしまうみたいで)
改行もされず本文が全...続きを読む

Aベストアンサー

>mailtoコマンド
mailtoプロトコル...ですよねorz

>CreateProcess関数を使うとできそうな記事もありますがちょっとハードルが高そうです。
VBA的には Shell関数を使えばいいのでそうでもないですか。
レジストリを見に行って、既定メーラーを取得して起動オプションに本文をくっつける感じ?

Sub try_3()
  Const HKEY = "HKEY_CLASSES_ROOT\mailto\shell\open\command\"
  Dim Flg  As Boolean
  Dim Arg  As String
  Dim sPath As String
  Dim i   As Long
  Dim b()  As Byte
  Dim tmp, ary

  On Error GoTo errHandler

  tmp = Selection.Value
  If IsArray(tmp) Then
    ReDim ary(1 To UBound(tmp))
    For i = 1 To UBound(tmp)
      ary(i) = Join(Application.Index(tmp, i, 0), "")
    Next
    Arg = Join(ary, vbLf)
  Else
    Arg = tmp
  End If
  
  '既定メーラー取得(WinXP)
  With CreateObject("WScript.Shell")
    sPath = .ExpandEnvironmentStrings(.RegRead(HKEY))
  End With
  sPath = Replace$(Replace$(sPath, """%1""", ""), "%1", "")
  Flg = InStr(1, sPath, "thunderbird", vbTextCompare)
  
  If Flg Then
    'thunderbirdだと文字化けしたのでUTFエンコード
    With CreateObject("ScriptControl")
      .Language = "JScript"
      Arg = .CodeObject.encodeURI(Arg)
    End With
  Else
    '簡易的にSJISエンコード
    b = StrConv(Arg, vbFromUnicode)
    Arg = ""
    For i = 0 To UBound(b)
      Arg = Arg & "%" & Right$("0" & Hex$(b(i)), 2)
    Next
  End If
  
  Arg = "mailto:メールアドレス?" & _
     "subject=件名&" & _
     "body=" & Arg

  Shell sPath & Arg

  Exit Sub
errHandler:
  MsgBox Err.Number & ":" & Err.Description
End Sub

とりあえずwinXPで Outlook/Outlook Express/thunderbird は動きました。
他環境だったりする場合、ここ
http://jehupc.exblog.jp/9727243/
の情報が参考になると思います。

#個人的にはCDOをおすすめしますが

>mailtoコマンド
mailtoプロトコル...ですよねorz

>CreateProcess関数を使うとできそうな記事もありますがちょっとハードルが高そうです。
VBA的には Shell関数を使えばいいのでそうでもないですか。
レジストリを見に行って、既定メーラーを取得して起動オプションに本文をくっつける感じ?

Sub try_3()
  Const HKEY = "HKEY_CLASSES_ROOT\mailto\shell\open\command\"
  Dim Flg  As Boolean
  Dim Arg  As String
  Dim sPath As String
  Dim i   As Long
  Dim b()  As Byte
  Dim tmp...続きを読む

QVBA shellでメールを作成した際の変数は?

エクセルVBAから、shellメソッド?を使い、サンダーバードのメール作成画面を呼び出し
送信先、件名、本文はワークシートから持ってくるというプログラムを作りたいです。

webを調べた結果、自分にもできそうなのはshellでのメール作成画面の呼び出しだったので
以下のプログラムをテストしてます。

Shell """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose ""to="" アドレス "",subject=件名,body=本文""", vbNormalFocus

上記プログラムで、メール画面を呼び出せたのですが
送信先、件名、本文を変数から入力することはできないのでしょうか?

例えば上記例で言うと、to=の後の「アドレス」を変数にしたいのです。

例えば上記のプログラムの前に
アドレス=○○@yahoo.co.jp
のように、変数宣言をしても、出てきた送信画面では「アドレス」のまま、固定値のままなのです。

メール作成画面にデータを渡す際、変数の使用をする方法はあるのでしょうか?

エクセルVBAから、shellメソッド?を使い、サンダーバードのメール作成画面を呼び出し
送信先、件名、本文はワークシートから持ってくるというプログラムを作りたいです。

webを調べた結果、自分にもできそうなのはshellでのメール作成画面の呼び出しだったので
以下のプログラムをテストしてます。

Shell """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose ""to="" アドレス "",subject=件名,body=本文""", vbNormalFocus

上記プログラムで、メール画面を呼び出せたのですが
送信先、件名...続きを読む

Aベストアンサー

Shell関数のコマンドに限らず、VBAコード内で文字列と変数をつなぐ時は

"文字列" & hensuu1 & "文字列" & hensuu2 & "文字列"

..のように、
文字列は『"』(ダブルクォート)で括り、
変数は『"』で括りません。
文字列と繋ぐ時は『&』 で繋ぎます。

文字列内に『"』ダブルクォートそのものを使いたい時は 『""』 2個重ねる事で『"』になります。

なので
  Dim アドレス As String
  Dim 件名 As String
  Dim 本文 As String
  アドレス = "xxxxx"
  件名 = "yyyyy"
  本文 = "zzzzz"
  Shell """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose to=" & アドレス & ",subject=""" & 件名 & """,body=""" & 本文 & """", vbNormalFocus

..こんな感じになります。

少し整理するなら
  Dim sPath As String
  Dim Mailad As String
  Dim Subjct As String
  Dim Bodyst As String

  sPath = """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose "
  Mailad = "アドレス"
  Subjct = "件名"
  Bodyst = "本文"
  Shell sPath & "to=" & Mailad & "," & _
         "subject=""" & Subjct & """," & _
         "body=""" & Bodyst & """"

..みたく。

また、
http://oshiete.goo.ne.jp/qa/5977178.html?order=asc
こちらも参考にすると良いかもしれません。
その場合、 Sub try_3 の最後の箇所
>  Arg = "mailto:メールアドレス?" & _
>     "subject=件名&" & _
>     "body=" & Arg
>  Shell sPath & Arg

ここを変数で対応させたいなら以下のように変更です。

  Dim Mailad As String
  Dim Subjct As String
  Mailad = "アドレス"
  Subjct = "件名"
  Arg = "to=" & Mailad & "," & _
     "subject=""" & Subjct & """," & _
     "body=" & Arg
  Shell sPath & Arg

Shell関数のコマンドに限らず、VBAコード内で文字列と変数をつなぐ時は

"文字列" & hensuu1 & "文字列" & hensuu2 & "文字列"

..のように、
文字列は『"』(ダブルクォート)で括り、
変数は『"』で括りません。
文字列と繋ぐ時は『&』 で繋ぎます。

文字列内に『"』ダブルクォートそのものを使いたい時は 『""』 2個重ねる事で『"』になります。

なので
  Dim アドレス As String
  Dim 件名 As String
  Dim 本文 As String
  アドレス = "xxxxx"
  件名 = "yyyyy"
  本文 = "zzzzz"
  Shel...続きを読む

Qthunderbirdでのメールの差し込み

thunderbirdを使っています。ワード2010を使って差し込んだメールを送信したいのですが、最後に完了して、送信するを押しても送信されません。thunderbirdでは、送信できないのでしょうか。

Aベストアンサー

Thunderbirdが既定に設定されていてもOutlookが起動するのでしたら、対応していないと思います。

Thunderbirdで一括送信する場合は、アドオンのMail Mergeを使うとよいのですが、それではだめでしょうか?
https://addons.mozilla.org/ja/thunderbird/addon/mail-merge/
(過去ログなど)
http://oshiete.goo.ne.jp/qa/7468333.html
http://kb.mozillazine.org/Mail_merge#Using_a_mailing_list_program

Q一括送信するメールソフト(単語を差込したい)?

相手のアドレス、名前、用件が1行毎に書かれたエクセルファイルがあります。
差込印刷のように、定型文の要所要所にエクセルの各セルの値を埋め込んだメールを一括して送信するソフトを捜しております。
フリーとシェアソフトをご紹介お願いします。
できたら長所・短所などわかれば
お願いいたします。

Aベストアンサー

ExcelがあるならWordとOutlookもインストールしていませんか。
Excelのリスト→Wordに転記→Word上のリストを利用して差込印刷機能を使ってOutlookで送信ということならできます。
・差し込み印刷を使用して個人用の電子メール メッセージを電子メールのアドレス一覧に送信する - Word - Office.com
http://office.microsoft.com/ja-jp/word-help/HA010109162.aspx

Qエクセルのリストからメールを一括送信する方法

エクセルで30件くらいの顧客データがあります。
ある縦の列は顧客のメールアドレスが記載されています。
全員にメールを一括送信(BCCを使用して)したいのですが、いまはメールのBCCの欄にひとつずつコピーしてカンマで区切って送信しています。
それをもっと効率的にやる方法はないでしょうか?

Aベストアンサー

 メーラーは OutlookExpressですか? メールアドレスが書かれた
エクセルが在るなら 編集してアドレスと名前だけにします。
そして「名前を付けて保存」、ファイルの種類を CSV(カンマ区切り)に
変更して保存して下さい。 CSVは色々なアドレス帳から作られる特殊な
ファイルです。逆に OutlookExpress等のアドレス帳にもエクスポート出来ます。 
 
 OutlookExpressのアドレス帳にエクスポート出来たら メールの作成を開いて
宛先、または CCの文字をクリック、現れたアドレス帳で必要なアドレスを
範囲指定して 右の BCCをクリックすれば簡単に BCCに入ります。 
勿論 宛先には御自分のアドレスを入れます。 如何でしょうか?

Q個別に違う添付ファイルを付けて一括でメール配信をしたいのですが、EXC

個別に違う添付ファイルを付けて一括でメール配信をしたいのですが、EXCELやACCESSのVBA、またはソフトなどご存知の方いませんか。

例)
送信先    添付ファイル 本文(同じ)
田中さん   excel01.xls  添付いたしましたファイルの内容にて、お願いします。
鈴木さん excel02.xls  添付いたしましたファイルの内容にて、お願いします。
;
;


添付ファイルが1つで、多数の方に送信できるフリーソフトはあったのですが、それぞれに送れる方法が
知りたいです。(添付ファイルは 1つのフォルダにあるとして)

100件位、あるので毎回 通常のメールに添付するのが面倒なのです。
宜しくお願いします。

Aベストアンサー

エクセルのVBAで Outlookをコントロールする事例です。
仮に D8セルの添付するファイルを保存しているパスを入れておきます。

13行目以下の
B列に メールアドレス
C列に 件名
D列に 本文
F列に ファイル名 をいれて準備します。

Sub ボタン1_Click()
Dim myOLApp As Object
Dim myDATA As MailItem
Dim GYOU As Long
'### OUTLOOKのオブジェクトを作成後、メールを新規作成する。
Set myOLApp = CreateObject("Outlook.Application")
For i = 13 To Range("B65536").End(xlUp).Row
Set myDATA = myOLApp.CreateItem(olMailItem)
'(添付ファイルの追加)
myDATA.Attachments.Add Range("D8").Value & "\" & Range("F" & i).Value & ".xls"
'(宛先のアドレス、件名、本文の追加)
myDATA.To = Range("B" & i).Value
myDATA.Subject = Range("C" & i).Value
myDATA.Body = Range("D" & i).Value
'作成したメールアイテムの送信
myDATA.Send
Next
Set myDATA = Nothing
Set myOLApp = Nothing
End Sub

エクセルVBAでOlutLookのVBAを作動させるには
VBエディターの ツール=>参照設定 で Micrsoft Loutlook 10.0 Object Library にチェックを入れておきます。

エクセルのVBAで Outlookをコントロールする事例です。
仮に D8セルの添付するファイルを保存しているパスを入れておきます。

13行目以下の
B列に メールアドレス
C列に 件名
D列に 本文
F列に ファイル名 をいれて準備します。

Sub ボタン1_Click()
Dim myOLApp As Object
Dim myDATA As MailItem
Dim GYOU As Long
'### OUTLOOKのオブジェクトを作成後、メールを新規作成する。
Set myOLApp = CreateObject("Outlook.Application")
For i = 13 To Range("B65536").End(xlUp).Row
Set myDATA...続きを読む

QEXCELマクロで複数のEMAIL宛先を指定

WIN XP, EXCEL2002, メーラーはOUTLOOK2002を使っています。
EXCELマクロで複数のEMAIL宛先を指定することはできますか?

ActiveWorkbook.SendMail Recipients:="email@*****.co.jp", Subject:="test"
にてひとつの宛先の場合はちゃんと送信できましたが、複数の宛先を指定する方法が分かりません。
よろしくお願いいたします。

Aベストアンサー

以下のようにすると、1本のメールを複数人に送れます。

Dim Str(4) As String
Str(0) = "email0@*****.co.jp"
Str(1) = "email1@*****.co.jp"
Str(2) = "email2@*****.co.jp"
Str(3) = "email3@*****.co.jp"
ActiveWorkbook.SendMail Recipients:=Str, Subject:="test"

または

ActiveWorkbook.SendMail Recipients:="email0@*****.co.jp,email1@*****.co.jp,email2@*****.co.jp,email3@*****.co.jp", Subject:="test"

最初のは#2の方の回答と似ていますが、#2の方の回答は1本のメールを4人に送るのではなく、4本のメールを単独で1人ずつに送っています。

この回答では、1本のメールを4人に送っています。

「送った相手に、誰々に送っているのか、知らせたい」場合は1本のメールで済ませます。

「送った相手に、誰々に送っているのか、知らせたくない」場合は、個別に4本で送ります。

1本で済ますか個別に送るかは、場合に合わせて使い分けた方が良いでしょう。

以下のようにすると、1本のメールを複数人に送れます。

Dim Str(4) As String
Str(0) = "email0@*****.co.jp"
Str(1) = "email1@*****.co.jp"
Str(2) = "email2@*****.co.jp"
Str(3) = "email3@*****.co.jp"
ActiveWorkbook.SendMail Recipients:=Str, Subject:="test"

または

ActiveWorkbook.SendMail Recipients:="email0@*****.co.jp,email1@*****.co.jp,email2@*****.co.jp,email3@*****.co.jp", Subject:="test"

最初のは#2の方の回答と似ていますが、#2の方の回答は1本のメール...続きを読む

QEXCEL VBAでメール添付して送信

こんにちは。
EXCEL VBAで
自分のファイルをある宛先にメールで送信したい場合は、
どのようにしたらできますか?
どなたか、わかる方・・・教えてください。
よろしくお願いします。

Aベストアンサー

参考のスレのVBAを必要な部分だけにすると以下になります。
準備
VBエディターのツール 参照設定で
Microsoft Outlook 10.0 Object Library にチェックをいれます。
B3セルに 宛先 メールアドレス
F3セルに CC メールアドレス
C3セルに 件名
D3セルに 本文
G3セルに 添付ファイルのパスとファイル名
入れておいた場合です。

Sub ボタン1_Click()
Dim myOLApp As Object
Dim myDATA As MailItem
Set myOLApp = CreateObject("Outlook.Application")
Set myDATA = myOLApp.CreateItem(olMailItem)
myDATA.To = Range("B3").Value
myDATA.CC = Range("F3").Value
myDATA.Subject = Range("C3").Value
myDATA.Body = Range("D3").Value
myDATA.Attachments.Add Range("G3").Value
myDATA.Send
Set myDATA = Nothing
Set myOLApp = Nothing
End Sub

コピペして使ってみてください。コマンドの意味は先紹介のスレに
説明して有ります。

参考のスレのVBAを必要な部分だけにすると以下になります。
準備
VBエディターのツール 参照設定で
Microsoft Outlook 10.0 Object Library にチェックをいれます。
B3セルに 宛先 メールアドレス
F3セルに CC メールアドレス
C3セルに 件名
D3セルに 本文
G3セルに 添付ファイルのパスとファイル名
入れておいた場合です。

Sub ボタン1_Click()
Dim myOLApp As Object
Dim myDATA As MailItem
Set myOLApp = CreateObject("Outlook.Application")
Set myDATA = myOLApp.CreateItem(olM...続きを読む

Qthunderbirdでメールをエクセルにエクスポートする方法

タイトル通りなんですが、thuderbirdのメールをエクセルにエクスポートする方法はありますでしょうか?

どうかよろしくお願いいたします。

Aベストアンサー

Thunderbirdには、便利な拡張機能がありますから、変なツールは不要です。

以前にも同様な質問にお答えしていますが、次のImport Export Tools(既にVer3.0テスト版やThunderbirdベースのメーラーPostboxにも対応、旧名:Mbox Import)を導入したら、各トレイのメールデータのバックアップや復元、今回希望されるCSVファイル(目次のみを含む)の作成などが可能になります。
http://mozilla-remix.seesaa.net/article/28838742.html

導入後に、並べたい順に表示したトレイ上で右クリック→「取り込み・書き出し」→「フォルダにあるすべてのメッセージを書き出す」の下に、次の項目を含むメニューが出ます。
○プレーンテキスト(1つのファイル)
○目次のみ(HTML)
○目次のみ(CSV)

3つ目のCSVはエンコードの関係か、文字化けが起こり、ちょっと使えないですが、

HTMLファイルへのエクスポート(自動的にフォルダの中に)が正常にできますから、デスクトップを選択してエクスポート(罫線付き)し、これを開いて、編集→「すべて選択」してコピーを実行した後に、開いた新規のExcelファイルのA1のセル上で右クリック→「貼り付けて」から、セルの高さや幅を調整(後でもよいですね)したら完成です。

なお、メール一覧の項目は、送信者、宛先、件名、送信日時になります。
日常的にも使える大変便利な拡張機能なので、本体の機能に入れて欲しいといつも思っていますので、試してみてください。

Thunderbirdには、便利な拡張機能がありますから、変なツールは不要です。

以前にも同様な質問にお答えしていますが、次のImport Export Tools(既にVer3.0テスト版やThunderbirdベースのメーラーPostboxにも対応、旧名:Mbox Import)を導入したら、各トレイのメールデータのバックアップや復元、今回希望されるCSVファイル(目次のみを含む)の作成などが可能になります。
http://mozilla-remix.seesaa.net/article/28838742.html

導入後に、並べたい順に表示したトレイ上で右クリック→「取り込み・書き出し...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報