• ベストアンサー

Excelマクロでメールを送る時

いつもお世話になっております。 EXCELで、ワークシートのある部分に"MAILADDRESS"という名前を付け、 そこにメールアドレスを入れます。 同じブック内の別ワークシートをcsv形式で保存して、"MAILADDRESS"に入力されている メールアドレスにおくるというVBAの命令を書いて下記の通りとしてみました。 プログラムはエラーの表示がされず終わるのですが、メールを送ってくれません。 何故でしょうか?教えて下さい。 MAILADDRESSのセルはデータの最後に"EOL"という文字列を入力しています。 Dim R As Range For Each R In Range("MAILADDRESS") If R.Value <> "EOL" Then ActiveWorkbook.SendMail Recipients:=R.Value End If Next R Excelのバージョンは2002 SP3です。

質問者が選んだベストアンサー

  • ベストアンサー
  • puzou
  • ベストアンサー率35% (102/284)
回答No.1

ActiveWorkbook.SendMail Recipients:= の後は、 宛先が 1 か所だけのときは宛先名を文字列として指定し、 宛先が複数のときは宛先名を文字列の配列として指定しますから、 原因は、配列に入れてないからだと思います。

koba_nob
質問者

お礼

ありがとうございます。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

>同じブック内の別ワークシートをcsv形式で保存して、 >ActiveWorkbook.SendMail この場合のActiveWorkbook に、csvファイルとしての実体がないと思います。 Bsmtp.dll を使って、添付ファイルにしてみたらどうですか? MS-Excelテクニック: http://homepage1.nifty.com/gak/MSTips/multimail.htm (IKEDABBS ホーム:http://homepage1.nifty.com/gak/)

参考URL:
http://homepage1.nifty.com/gak/MSTips/multimail.htm
koba_nob
質問者

お礼

ありがとうございました。 For Each R In Range("MAILADDRESS") If R.Text <> "EOL" Then ActiveWorkbook.SendMail Recipients:=R.Text End If Next R とすると、送れるようになりました。

関連するQ&A

  • エクセルでメール送信

    エクセルのワークシートが複数あります。 VBAで  ActiveWorkbook.SendMail Recipients:="xxxxxx@xxx.ne.jp" とすると、ワークブックがメールに添付され送信されますよね。 これを、ワークブック全体ではなく、特定のシートだけをメールに添付して送信したいのですが・・・ 送信側はワークブックにて入力用シートでデータの入力をし、送信用のシートを完成させます。受信側では入力用シートは不要です。 すいません、このような以前にもありましたか? どなたか教えてください。お願いします。

  • エクセルVBAで、シートのみを本文として送信する方法

    エクセルのブックを送信する場合は、 ActiveWorkbook.SendMail Recipients:="***@***.com" で出来ますが、シートのみを本文として送信するのは、VBAでは出来ないのでしょうか? メニューからですと、「ファイル」→「送信」→「メールのあて先」で、シートのみを本文として送信出来るのですが…。

  • エクセルのマクロについて教えてください。

    現在エクセルで作ったファイルを14人に回覧で送信しようとしています。 それをマクロを使ってボタン一つで14人に送信します。 それぞれのアドレスはセルの【q12~q25】に入っています。 そのファイルデータは14人の共有サーバーに有り、14人誰でもそのボタン一つでファイルを更新したら14人に送信するようにマクロをくもとしているのですが上手くいきません。 メール送信のBSMTP.DLLなどは出来るだけ使いたくありません。 下記のがマクロです。 質問をまとめますと (1)マクロはどこがおかしいのでしょうか? (2)どのPCでもBSMTP.DLLなどは使用せず送信マクロを使えるように出来るのでしょうか?以前似たようなマクロ組んだら他のPCではメール送信出来ませんでした。 マクロは ***************************************** ActiveWorkbook.HasRoutingSlip = True With ActiveWorkbook.RoutingSlip .Recipients = Array(Union(Range("q12"), Range("q13"), Range("q14"), Range("q15"), Range("q16"), Range("q17"), Range("q18"), Range("q19"), Range("q20"), Range("q21"), Range("q22"), Range("q23"), Range("q24"), Range("q25"))) .Subject = "掲示板更新のお知らせ" .Message = "掲示板ファイルが更新されましたので確認してください。" .Delivery = xlOneAfterAnother .ReturnWhenDone = True .TrackStatus = True End With ActiveWorkbook.Route End Sub ***************************************** です。 宜しくお願いいたします。

  • エクセルのマクロを教えてください。

    マクロの初心者です。 特に変数が全く使えず、下記もどのように記載していいのかわからないため教えていただけないでしょうか。 ユーザーフォームのtextbox2に開始番号があります。 textbox3に本数があります。 sheet1のB12セルには開始番号が入ります。 開始番号から本数分+1したものを順番にセルに入っていくようにしたいです。 ただ、入れたいセルが横→左下(開始番号の列)→横→左下(開始番号の列)・・・としたいため、どのように書いていいのかわかりません。 地道に書くのであれば、下記のようになると思うのですが、変数を使って書く場合はどのようになるのか教えていただけないでしょうか。 Worksheets("Sheet1").Range("B12").Value = TextBox2.Value If TextBox3.Value = 2 Then Worksheets("Sheet1").Range("G12").Value = TextBox2.Value * 1 + 1 ElseIf TextBox3.Value = 3 Then Worksheets("Sheet1").Range("G12").Value = TextBox2.Value * 1 + 1 Worksheets("Sheet1").Range("B13").Value = TextBox2.Value * 1 + 2 ElseIf TextBox3.Value = 4 Then Worksheets("Sheet1").Range("G12").Value = TextBox2.Value * 1 + 1 Worksheets("Sheet1").Range("B13").Value = TextBox2.Value * 1 + 2 Worksheets("Sheet1").Range("G13").Value = TextBox2.Value * 1 + 3 ElseIf TextBox3.Value = 5 Then Worksheets("Sheet1").Range("G12").Value = TextBox2.Value * 1 + 1 Worksheets("Sheet1").Range("B13").Value = TextBox2.Value * 1 + 2 Worksheets("Sheet1").Range("G13").Value = TextBox2.Value * 1 + 3 Worksheets("Sheet1").Range("B14").Value = TextBox2.Value * 1 + 4 ・ ・ ・ End If

  • マクロにてメール送信

    よろしくお願いします。 上記のマクロを組みましたが、うまく作動するPCとエラーを起こすPCが発生しております。 closeのマクロに以下の内容で組み込んでます。 Dim myrecipients myrecipients = Array("メールアドレス(1)", "メールアドレス(2)") ActiveWorkbook.SendMail Recipients:=myrecipients, Subject:="ブック名", returnreceipt:=True なにか落ち度がありますか? ※XPで作動するPCとエラー発生するPCが出ております。

  • 受信メールのフィルター(ラベル)へエクセルから確実にリンクする方法をお教えいただけないでしょうか

    エクセルのセルをクリックすると ほかのセルに入力してあるメールアドレスへ 確実にリンクさせる方法をお教えいただけないでしょうか Yahoo!でなら、できましたが、 G-mailですと僅かな時間だけ アドレスウィンドウにリンクさせたいラベルまで表示されますが、 すぐその部分が消えてしまい、受信トレイが表示されます。 ちなみに エクセルのWorksheet_SelectionChangeイベントに ActiveWorkbook.FollowHyperlink Address:=Range("B2").Value というように記述しています Range("B2")にはG-mail側のフィルター(ラベル)に 相応するアドレスを入力してあります いろいろ私なりに調べてやってみたつもりですが、 解決しませんので、お教えいただけないでしょうか 質問内容が分かりにくいかもしれませんが、よろしくお願いします

  • エクセル マクロ 教えてください。

    sheet1に (a1=No. b1=月日 C1=項目 d1=収入 e1=支出 f1=摘要 G1=店名)項目を作りそれらをユーザーフォームを作り入力したいです。 この記述では上手く動けません。教えてください。 Private Sub CommandButton1_Click() Dim r As Long, 最終行 As Long, 項目行 As Long Dim re As String r = textboxs1.Value + 10 最終行 = Worksheets("入力").Range("B65536").End(xlUp).Row If r <= 最終行 Then re = MsgBox("訂正" & " " & "すでにデータが入力されています。" & Chr(13) & _ Chr(13) & "データを置き換えます。 本当に良いですか? ", _ Buttons:=vbYesNo + vbExclamation, Title:="注意!!") If re = vbYes Then With Worksheets("入力") .Cells(r, 2).Activate .Cells(r, 1).Value = TBox1.Value .Cells(r, 2).Value = TBox2.Value .Cells(r, 3).Value = ComboBox1.Value .Cells(r, 4).Value = TBox3.Value .Cells(r, 5).Value = TBox4.Value .Cells(r, 6).Value = TBox5.Value .Cells(r, 7).Value = ComboBox2.Value End With データクリア Exit Sub End If データクリア Exit Sub End If If r >= 最終行 + 1 Then r = 最終行 + 1 End If With Worksheets("入力") .Cells(r, 1).Value = TBox1.Value .Cells(r, 2).Value = TBox2.Value .Cells(r, 3).Value = ComboBox1.Value .Cells(r, 4).Value = TBox3.Value .Cells(r, 5).Value = TBox4.Value .Cells(r, 6).Value = TBox5.Value .Cells(r, 7).Value = CBomboox2.Value End With データクリア End Sub r = データNo + 10 With Worksheets("入力") .Activate .Cells(r, 2).Select TBox1.Value = .Cells(r, 1).Value TBox2.Value = .Cells(r, 2).Value ComboBox1.Value = .Cells(r, 3).Value TBox3.Value = Format(.Cells(r, 4).Value, "###,###") TBox4.Value = Format(.Cells(r, 5).Value, "###,###") TBox5.Value = .Cells(r, 6).Value ComboBox2.Value = .Cells(r, 7).Value End With Exit Sub End If If データNo > 最終行 - 10 Then データNo = 最終行 - 9 TBoxNo.Value = データNo データクリア End If End Sub

  • エクセル マクロ IF関数について

    Sheet1にグループボックス内で、チェックボタンで項目を選択するとA1に記載されるように作成、マクロで入力ボタン作成しボタンをクリックするとSheet2に記載されるように作りました。しかし、項目が多いためSheet2を見るとABCDEFGなどの列に空白が目立ち使いづらいです。 そこでIF関数を使い何とか出来ないでしょうか? 例)SHEET1 B2に原因のグループボックスにカテゴリー(チェックボックスにて1)入力ミス、2)人、3)機械) B3に対応のグループボックスにカテゴリー(チェックボックスにて1)外注、2)修正、3)報告) と作り、それらがチェックされていたら、A1の列に表示され入力ボタンを押したら、Sheet2のAには原因、Bには対応と記載されるようにしたいです。その時Sheet1のA列に空白があれば、Sheet2の列に表示するようにしたいです。 実際のマクロ記入 Sub 入力() Dim LastRow As Long With Worksheets("Sheet2") LastRow = Worksheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row + 1 .Range("A" & LastRow).Value = Worksheets("Sheet1").Range("A6").Value .Range("B" & LastRow).Value = Worksheets("Sheet1").Range("A7").Value .Range("C" & LastRow).Value = Worksheets("Sheet1").Range("A8").Value .Range("D" & LastRow).Value = Worksheets("Sheet1").Range("A9").Value .Range("E" & LastRow).Value = Worksheets("Sheet1").Range("A10").Value .Range("F" & LastRow).Value = Worksheets("Sheet1").Range("A12").Value .Range("G" & LastRow).Value = Worksheets("Sheet1").Range("A13").Value .Range("H" & LastRow).Value = Worksheets("Sheet1").Range("A15").Value .Range("I" & LastRow).Value = Worksheets("Sheet1").Range("A16").Value .Range("J" & LastRow).Value = Worksheets("Sheet1").Range("A19").Value End With End Sub お願いします教えてください。

  • このマクロあっていますでしょうか?よろしくお願いいたします。

    ★sheetA Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$C$14" And Target.Address <> "$C$19" _ And Target.Address <> "$F$19" Then Exit Sub If Target.Address <> "$R$14" And Target.Address <> "$S$14" _ And Target.Address <> "$T$19" Then Exit Sub Application.EnableEvents = False With Sheets("B") .Range("F14").Value = Range("C14").Value .Range("F17").Value = Range("C19").Value .Range("F20").Value = Range("F14").Value .Range("F23").Value = Range("F19").Value End With With Sheets("C") .Range("F13").Value = Range("R14").Value .Range("F14").Value = Range("S14").Value .Range("F18").Value = Range("T19").Value End With Application.EnableEvents = True End Sub ★sheetB Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$F$14" And Target.Address <> "$F$17" _ And Target.Address <> "$F$23" Then Exit Sub Application.EnableEvents = False With Sheets("A") .Range("C14").Value = Range("F14").Value .Range("C19").Value = Range("F17").Value .Range("F19").Value = Range("F23").Value End With Application.EnableEvents = True End Sub ★sheetC Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$F$13" And Target.Address <> "$F$14" _ And Target.Address <> "$F$18" Then Exit Sub Application.EnableEvents = False With Sheets("A") .Range("R14").Value = Range("F13").Value .Range("S14").Value = Range("F14").Value .Range("T19").Value = Range("F18").Value End With Application.EnableEvents = True End Sub

  • マクロでエクセルをメール送信したい。

    最近、マクロを始めたのですが、マクロでActiveWorkbook(エクセル) を添付して、メール送信までを出来ないかな?と思っています。宛先 はエクセルの別シートにリストで入力しておき、VLOOKUPで参照して、 必要な人に配布したいのです。色々調べたのですが、よくわかりま せん。簡単なやり方があれば教えていただけませんか? メールソフトはOutlook、OSはWindowsXPです。よろしくお願いします。

専門家に質問してみよう