外出自粛中でも楽しく過ごす!QAまとめ>>

vbaを使用しメールを送信しようとしております。
以下に記載のように設定をしておりますが、2点設定の方法がわかりかねております。
大変お手数ですが、ご教示いただければ幸いです。

(1)宛先を複数設定したい場合はどのように設定すればよろしいでしょうか。
別々に送るのではなく、宛先にアドレス1、アドレス2を設定し1通のメールで送信をしたいです。

(2)添付ファイルを複数添付したいのですが、宛先によって添付ファイルの数が異なります。
たとえば、宛先Aには添付ファイルが1,2があるが、Bには添付ファイル1のみであり添付ファイル2フィール付度はNULLです。
この場合、エラーになってしまうのですが、"添付ファイルフィールドがnullでも無視してそのまま送信する"と設定はできるのでしょうか。

---------------------------------------
テーブル名:テーブル1
フィールド:アドレス1、アドレス2、件名、本文、添付ファイル1、添付ファイル2
---------------------------------------
Sub SAMPLE_0216()
Dim db As DAO.Database
Dim R1 As Recordset
Dim AP As Object
Dim ML As Object
Dim L1 As String

Set db = CurrentDb
Set R1 = db.OpenRecordset("テーブル1")
Set AP = CreateObject("Outlook.Application")

R1.MoveFirst

Do Until R1.EOF
'メールを作成
Set ML = AP.createitem(0)
'アドレスをセット
ML.To = R1!アドレス1
'件名をセット
ML.Subject = R1!件名
'本文をセット
ML.Body = R1!本文
'ファイルを添付1
L1 = R1!添付ファイル1
ML.Attachments.Add L1
'ファイルを添付2
L1 = R1!添付ファイル2
ML.Attachments.Add L1

'メールを送信
ML.Send

R1.MoveNext
Loop

End Sub
-----------------------------------------


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

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

A 回答 (1件)

Accessはわからないのですが、ExcelからのOutlookの操作と基本は同じはずなので一部推定を交えて答えさせていただきます。



まず宛先ですが、";"(セミコロン)で区切れば複数設定できます。
Access VBA の書き方ですが、
ML.To = R1!アドレス1 & ";" & R1!アドレス2
でよさそうに思えるのですがいかがでしょうか。
宛先が1つの場合でも、アドレス1かアドレス2のうち宛先の入っていない方が空文字列(長さ0の文字列)であればこのままで大丈夫なはずです。

次に添付ファイルですが、Nullを無視してそのまま送信可能かどうかはわからないのですが、Nullなら添付しないようにすれば話は簡単だと思います。
Access VBA の書き方ですが、たぶん以下のようなものでいいと思います。
'ファイルを添付1
IF IsNull(R1!添付ファイル1) = False Then
L1 = R1!添付ファイル1
ML.Attachments.Add L1
End If
'ファイルを添付2
IF IsNull(R1!添付ファイル2) = False Then
L1 = R1!添付ファイル2
ML.Attachments.Add L1
End If
(フィールドがNullかどうかの判定は参考URLのページをまねてみたのですがこれでいいでしょうか?)
http://oshiete.goo.ne.jp/qa/1223220.html

参考URL:http://oshiete.goo.ne.jp/qa/1223220.html
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
お返事が遅くなり申し訳ありません。
ご回答いただいた方法でできました!
ありがとうございました。

お礼日時:2013/07/15 14:17

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

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

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

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

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

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本のメール...続きを読む

QMS ACCESSを利用して複数へのメール送信

現在、Microsoft Accessを利用したクレーム管理表を作成中で、そのクレーム内容を複数名にて情報共有したいと思っています。そこで、皆様のアドバイスを頂戴できれば助かります。

Accessのフォーム内に複数のメールアドレスを表示させ、その中から選択したアドレスに対してクレーム内容(レポート)をメール送信(OUTLOOK又はOE)したい。

(できれば、チェックボックスを利用して、チェックを入れたアドレス(又は人名)に対してメール送信を行いたいと思います。)

素人質問で申し訳ございませんが、宜しくお願い致します。

Aベストアンサー

sendobjectはマクロでもできますが、一旦VBAを覚えるとそちらの方が分かりやすいのでVBAの例を記述しました。

それでは、もっと詳しくご説明します。

フォーム上にメール送信ボタンを作成します。
そのボタンのプロパティーに「イベント」があると思います。
そこの「クリック時」で「イベントプロシージャー」を選択して、右端の「・・・」をクリックしてください。

VBA記述画面が表示されるはずです。
その中のprivate sub と end subの間に前述の内容を貼り付けて完成です。

もちろん、to_adrとcc_adrのアドレス記述は実際に存在するメールアドレスに変更してくださいね。

QMS Access からメールを送るには

現在、MS Accessで顧客の情報を管理しています。名前・住所の他にEメールも
登録しているんですが、このEメールに同じ内容のメールを送りたいと考えて
います。

テキストでエクスポートしてアドレス張に変換せずに、条件を検査後ワンタッチ
で、メーラーのBCCにアドレスを入れる事とかは出来ないでしょうか?

Aベストアンサー

VBAって、Accessのモジュールのことですから、Accessの機能ですよ。

BASP21は、Accessの機能ではありませんが、それほど難しいものではありませんよ。

下記は、サンプルです。

Sub メール送信()
' SMTPサーバーのアドレス
Const sSvName As String = "ご自分のSMTPサーバーのアドレス(xxx.co.jpってやつ)"
' メールのFromに入れるアドレス
Const sFrom As String = "自分のメールアドレス"
' BASP21
Dim bobj As Basp21
' BASP21のメッセージ
Dim sMsg As String
' データベース
Dim cnn As ADODB.Connection
' レコード
Dim rec As New ADODB.Recordset
' 送信先のアドレスを入れる変数
Dim sTo As String

' BASP21のオブジェクトを作成
Set bobj = CreateObject("BASP21")

' 現在のAccessのDBと接続
Set cnn = CurrentProject.Connection

' テーブルを開く
rec.Open "テーブル名またはクエリー名を書く", cnn, adOpenForwardOnly, adLockReadOnly, adCmdTableDirect

Do Until rec.EOF
' 送信先のアドレスをテーブルから取得
sTo = rec.Fields("送信先のメールアドレスが入っているフィールドの名前").Value

' メールの送信
sMsg = bobj.SendMail(sSvName, sTo, sFrom, "メールの表題", "メールの本文", "")

If sMsg <> "" Then
'送信に失敗した場合のメッセージ
MsgBox sMsg
End If
'テーブルの次のレコードを読む
rec.MoveNext
Loop

' テーブルを閉じる
rec.Close

' 後始末
Set rec = Nothing
Set cnn = Nothing
Set bobj = Nothing

End Sub

アウトルックを使う方法もあると思いますが、VBAは避けてとおれないと思うのですが・・・

VBAって、Accessのモジュールのことですから、Accessの機能ですよ。

BASP21は、Accessの機能ではありませんが、それほど難しいものではありませんよ。

下記は、サンプルです。

Sub メール送信()
' SMTPサーバーのアドレス
Const sSvName As String = "ご自分のSMTPサーバーのアドレス(xxx.co.jpってやつ)"
' メールのFromに入れるアドレス
Const sFrom As String = "自分のメールアドレス"
' BASP21
Dim bobj As Basp21
' BASP21のメッセージ
Dim sMsg A...続きを読む

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...続きを読む

QEXCEL VBA メール送信でファイル添付

現在、使用しているVBAを利用したメンバー向け案内メール配信で、ファイルを添付できないかと考えております。
G列に入力したアドレスのファイルを添付して送信できればと思うのですが、ご教授願えませんでしょうか。

現在のVBAは企業名、宛先共に変えられるように下記のような形となっております。
添付ファイルも宛先毎に異なります。

B列:送信先メールアドレス
C列:メール件名
D列:送信先所属名
E列:送信先宛名
F列:メール本文

コマンドボタンで一括配信となっております。

【以下記述】
Sub Mail_Send()

Dim iMsg As Object
Dim iConf As Object
Dim strbody As String
Dim Flds As Variant
Dim i, LastRow As Integer

' CDOオブジェクト初期設定
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")

iConf.Load -1 ' CDO Source Defaults
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Worksheets("Sheet1").Range("C2").Value
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Worksheets("Sheet1").Range("C3").Value
.Update
End With

' 送信範囲設定
LastRow = Worksheets("Sheet1").Range("B7").End(xlDown).Row

' メール送信ループ
For i = 8 To LastRow

' 送信状況メッセージクリア
Worksheets("Sheet1").Range("F2").Value = ""

' メール本文作成
strbody = Worksheets("Sheet1").Range("D" & i).Value & vbCrLf & " " & _
Worksheets("Sheet1").Range("E" & i).Value & " 様" & vbCrLf & vbCrLf & _
Worksheets("Sheet1").Range("F" & i).Value

' 改行変換(送信環境によってはここの修正が必要かも)
tmpstrbody = Replace(strbody, vbLf, vbCrLf)
strbody = Replace(tmpstrbody, vbCr & vbCrLf, vbCrLf)

' メール送信
With iMsg
Set .Configuration = iConf
.From = Worksheets("Sheet1").Range("C4").Value
.To = Worksheets("Sheet1").Range("B" & i).Value
.BCC = Worksheets("Sheet1").Range("C5").Value
.Subject = Worksheets("Sheet1").Range("C" & i).Value
.TextBody = strbody
.Send
End With

' 送信状況メッセージ更新
Worksheets("Sheet1").Range("F2").Value = Worksheets("Sheet1").Range("B" & i).Value & " まで送信成功!"

' 3秒停止
Application.Wait [ NOW() + "0:00:03" ]

Next i

End Sub

現在、使用しているVBAを利用したメンバー向け案内メール配信で、ファイルを添付できないかと考えております。
G列に入力したアドレスのファイルを添付して送信できればと思うのですが、ご教授願えませんでしょうか。

現在のVBAは企業名、宛先共に変えられるように下記のような形となっております。
添付ファイルも宛先毎に異なります。

B列:送信先メールアドレス
C列:メール件名
D列:送信先所属名
E列:送信先宛名
F列:メール本文

コマンドボタンで一括配信となっております。

【以下記述...続きを読む

Aベストアンサー

確認していませんが、こんな感じで出来たと思います。
・・・
.From = Worksheets("Sheet1").Range("C4").Value
.To = Worksheets("Sheet1").Range("B" & i).Value
.BCC = Worksheets("Sheet1").Range("C5").Value
.Subject = Worksheets("Sheet1").Range("C" & i).Value
.Attachments.Add Worksheets("Sheet1").Range("G" & i).Value'←ここ
.TextBody = strbody
・・・

QAccessでメール一括送信ソフトを作りたい

Access初心者です。

同じ内容の文章を複数の人に送信できるソフトを
Accessで作りたいのですが、どうやったらいいでしょうか?
なにか参考になるサイト・情報等教えてください!!!

Aベストアンサー

> インストール後にどうやったら使えるのでしょうか??

参照設定しない場合は・・・
Dim bobj As Object
Set bobj = CreateObject("basp21")

Dim result As String
result = bobj.SendMailEx("C:\logFile.txt", _
"smtp Server のアドレス", _
"相手(受信者)のアドレス", _
"自分(送信者)のアドレス", _
"件名", _
"本文", _
"")

それぞれの引数は文字列型でパラメータを指定します。
最後の "" は「添付ファイル無し」の場合です。
これでメールをチクチクと 1通ずつ送信するのもよいですが、FlushMail メソッドで一気に送信するのもよいでしょう。
http://www.hi-ho.ne.jp/babaq/faq.html#M021

参考URL:http://www.hi-ho.ne.jp/babaq/basp21.html#0003

QエクセルVBAでOutlookメール作成

いろいろ検索や質問をしてエクセルVBAで、下記のコードによりOutlookのメールを自動作成できるようになりました。

Sub TEST01()
Set oApp = CreateObject("Outlook.Application")
Set objMAIL = oApp.CreateItem(0) 'olMailItem=0
strMOJI = "こんにちは!" & vbNewLine & "テストメールです。" & vbNewLine & "よろしくおねがいします。"
objMAIL.To = "XXXX@XXXXX.co.jp" '宛先
objMAIL.Subject = "テスト" '件名
objMAIL.Body = strMOJI '本文の代入
objMAIL.display '表示
End Sub

それで、実際にはstrMOJI に代入した文字列の下に、このマクロを記述してあるBOOKのSheets("Sheet1").Range("A1:D10")をコピーし、
「リッチテキスト形式」で貼り付けたいのです。
どのようなコードに変えればよいのか教えていただけると助かります。
よろしくお願いいたします。

いろいろ検索や質問をしてエクセルVBAで、下記のコードによりOutlookのメールを自動作成できるようになりました。

Sub TEST01()
Set oApp = CreateObject("Outlook.Application")
Set objMAIL = oApp.CreateItem(0) 'olMailItem=0
strMOJI = "こんにちは!" & vbNewLine & "テストメールです。" & vbNewLine & "よろしくおねがいします。"
objMAIL.To = "XXXX@XXXXX.co.jp" '宛先
objMAIL.Subject = "テスト" '件名
objMAIL.Body = strMOJI '本文の代入
objMAIL.display '表示
End S...続きを読む

Aベストアンサー

>ただ、マクロを2回以上走らせると、その都度いくつもOutlookが立ち上がってしまいます。
>これは解消できますか?
それは前回QAで手当て済みだったんですけどね。

Dim oApp    As Object
Dim objMAIL  As Object
Dim strMOJI(1) As String
Dim n     As Long

On Error Resume Next
Set oApp = GetObject(, "Outlook.Application")
On Error GoTo 0
If oApp Is Nothing Then
  Set oApp = CreateObject("Outlook.Application")
  oApp.GetNamespace("MAPI").GetDefaultFolder(6).display
End If

Set objMAIL = oApp.CreateItem(0)
strMOJI(0) = "こんにちは!" & vbCrLf & _
       "テストメールです。" & vbCrLf & _
       "よろしくおねがいします。" & vbCrLf
strMOJI(1) = "以上です。" & vbCrLf & _
       "EMAX株式会社" & vbCrLf & _
       "Emax"
objMAIL.To = "E-Mail_Address_Here"
objMAIL.Subject = "テスト"
objMAIL.BodyFormat = 2 'HTML形式
objMAIL.Body = strMOJI(0) & strMOJI(1)
objMAIL.display

n = Len(strMOJI(0))
ActiveSheet.Range("A1:D10").Copy
oApp.ActiveInspector.WordEditor.Range(n, n).Paste
Application.CutCopyMode = False

Set objMAIL = Nothing
Set oApp = Nothing

BodyFormatはHTML形式じゃないと書式が維持できないような感じです。
#バージョン、もしくは受信側のメーラーによるかもしれませんけど..

>ただ、マクロを2回以上走らせると、その都度いくつもOutlookが立ち上がってしまいます。
>これは解消できますか?
それは前回QAで手当て済みだったんですけどね。

Dim oApp    As Object
Dim objMAIL  As Object
Dim strMOJI(1) As String
Dim n     As Long

On Error Resume Next
Set oApp = GetObject(, "Outlook.Application")
On Error GoTo 0
If oApp Is Nothing Then
  Set oApp = CreateObject("Outlook.Application")
  oApp.GetNamespace("MAPI").GetDefaultFolder(6).display
End If

...続きを読む

QAccessのマクロからメールを送信しています。

Accessのマクロからメールを送信しています。
メールソフトをoutlook expressからoutlook2010に変更したのですが、
セキュリティの確認画面が出てきて、都度都度「許可」をしなければなりません。
この確認画面が表示されない状態でメール送信をしたいのですが…。
オプション→セキュリティ→「プログラムによるアクセス」の部分だと思ったのですが、
ラジオボタンがグレーになっていて変更ができませんでした。

よろしくお願いします。

Aベストアンサー

ANo.2 の回答に誤りがありました。Outlook 2010 では以下のキーになります。(キーが無ければ作成してください。)

キー: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Outlook\Security
値の名前:ObjectModelGuard
値の種類:REG_DWORD
値のデータ : 2

Q[VBA]CDOメッセージ送信エラー

CDOメッセージオブジェクトを使用し、EXCEL2010 VBAよりメール送信を実現したいのですが..
下記コードの .Sendを実行後にエラーメッセージ「[6]オーバーフローしました」が表示されます。
試行錯誤しておりますが..自力では解決できないため、皆様よりご教授賜りたく何卒よろしくお願い
申し上げます。
---------------------------------------------------------------------------------------------------------
Public Sub SendMail()
Dim objCDOMsg As New CDO.Message '/* CDOメッセージオブジェクト */

'// Dim objCDOMsg As Object '/* CDOメッセージオブジェクト */
'// Set objCDOMsg = CreateObject("CDO.Message")

With objCDOMsg
' /* メールサーバ設定 */
With .Configuration.Fields
.Item(CdoConfiguration.cdoSendUsingMethod) = CdoSendUsing.cdoSendUsingPort '/* 外部SMTP指定 */
.Item(CdoConfiguration.cdoSMTPServer) = "111.222.333.44" '/* SMTPサーバ名 */
.Item(CdoConfiguration.cdoSMTPServerPort) = 25 '/* ポート№ */
.Item(CdoConfiguration.cdoSMTPConnectionTimeout) = 60 '/* タイムアウト */
.Item(cdoSMTPAuthenticate) = cdoAnonymous '/* SMTP認証なし */
.Item(CdoConfiguration.cdoLanguageCode) = CdoCharset.cdoShift_JIS '/* 文字セット */
.Update
End With

' /* メール編集 */
.To = "test@aaa-bbb.com" '/* 宛先 */
.CC = "test@aaa-bbb.com" '/* CC */
.From = "test@aaa-bbb.com" '/* 送信者 */
.Subject = "Test mail" '/* 件名 */
.TextBody = "メール本文" '/* メール本文 */
.AddAttachment "C:\Users\term\Desktop\TempFile.txt" '/* 添付ファイル */

' /* メール送信 */
.Send <------------------- このコードをステップ実行後にエラーメッセージ表示
End With

' /* オブジェクト変数解放 */
Set objCDOMsg = Nothing
End Sub
---------------------------------------------------------------------------------------------------------
[実行環境]
・Windows 7 Professional SP1
・EXCEL 2010 (Ver. 14.0.7165.5000)
・Outlook 2010(Ver. 14.0.7165.5000)

[補足]
・Outlook セキュリティセンターの設定
DEP有効、マクロ警告、プログラムアクセス警告
・Outlook アカウント種類
POP/SMTP

以上、宜しくお願いいたします。

CDOメッセージオブジェクトを使用し、EXCEL2010 VBAよりメール送信を実現したいのですが..
下記コードの .Sendを実行後にエラーメッセージ「[6]オーバーフローしました」が表示されます。
試行錯誤しておりますが..自力では解決できないため、皆様よりご教授賜りたく何卒よろしくお願い
申し上げます。
---------------------------------------------------------------------------------------------------------
Public Sub SendMail()
Dim objCDOMsg As New CDO.Message '/* CD...続きを読む

Aベストアンサー

こんにちは。

正直な話、もうCDOを使ったのは古い昔の話なので、このエラーの要因というのは、コードそのものよりも、固有の設定に問題があるように思います。

自分で作ってみました。
ご質問のコードを元に、googleを使って自分自身用に作ってみました。
以下のコードで送られることは確認しましたが、ここ最近、Google は、メールの設定が異様に厳しくなりましたので、Google自体のメール・セキュリテイの設定を下げないとGoogleからは送信されませんが、コード自体は問題なさそうです。

>「転送においてサーバーに接続できませんでした」
このエラーメッセージは、Configuration のミスで発生しました。正しく直したら、通りました。

細かい問題は、相手のメールサーバーとの関係ですから、設定を細かく見ていくしかないと思います。

'//
Const myAddress As String ="********"
Const myPSW As String = "********"

Public Sub SendMail2()
Dim objCDOMsg As CDO.Message ' New CDO.Message '/* CDOメッセージオブジェクト */do.
Set objCDOMsg = New CDO.Message
'// Dim objCDOMsg As Object '/* CDOメッセージオブジェクト */
'// Set objCDOMsg = CreateObject("CDO.Message")
On Error GoTo ErrHandler
With objCDOMsg
  ' /* メールサーバ設定 */
  With .Configuration.Fields
    .Item(CdoConfiguration.cdoSendUserName) = myAddress '/*ユーザー名*/
    .Item(CdoConfiguration.cdoSendPassword) = myPSW  '/*パスワード*/
    .Item(CdoConfiguration.cdoSendUsingMethod) = CdoSendUsing.cdoSendUsingPort '/* 外部SMTP指定 */
    .Item(CdoConfiguration.cdoSMTPConnectionTimeout) = 100 '/* タイムアウト */
    .Item(CdoConfiguration.cdoSMTPServer) = "smtp.gmail.com" ' /* SMTPサーバ名 */
    .Item(CdoConfiguration.cdoSMTPServerPort) = 465 '/* ポート№ */
    .Item(CdoConfiguration.cdoSMTPAuthenticate) = cdoBasic
    .Item(CdoConfiguration.cdoSMTPUseSSL) = True
    .Item(CdoConfiguration.cdoLanguageCode) = CdoCharset.cdoShift_JIS '/* 文字セット */
    .Update
  End With
  
  ' /* メール編集 */
  .To = "xxxxxx@yyyyy.co.jp" '/* 宛先 */
  .From = "******@gmail.com" '/* 送信者 */
  .Subject = "Test mail" '/* 件名 */
  .TextBody = "MainMessage" & vbNewLine & Date & " " & Time & vbNewLine & _
   "This is TesMail" '/* メール本文 */
  '.AddAttachment ThisWorkbook.Path & "\myTest.Txt" ' "C:\Users\term\Desktop\TempFile.txt" '/* 添付ファイル */

  ' /* メール送信 */
  .Send '<------------------- このコードをステップ実行後にエラーメッセージ表示
End With
ErrHandler:
If Err.Number <> 0 Then
   MsgBox Err.Number & " :" & Err.Description
   'Debug.Print Err.Number & " :" & Err.Description
End If
' /* オブジェクト変数解放 */
Set objCDOMsg = Nothing
End Sub

こんにちは。

正直な話、もうCDOを使ったのは古い昔の話なので、このエラーの要因というのは、コードそのものよりも、固有の設定に問題があるように思います。

自分で作ってみました。
ご質問のコードを元に、googleを使って自分自身用に作ってみました。
以下のコードで送られることは確認しましたが、ここ最近、Google は、メールの設定が異様に厳しくなりましたので、Google自体のメール・セキュリテイの設定を下げないとGoogleからは送信されませんが、コード自体は問題なさそうです。

>「転送においてサー...続きを読む

Qエクセル内のメールアドレスをメール送信先に一斉に移す方法

エクセル内に多数のメールアドレスを記録しています。(縦にズラーッとタイプしています。)1つ1つのアドレスが1行ずつ入っています。

これらのメールアドレスを簡単にメールの送信先に入れる方法はありますでしょうか。1つ1つコピー、貼り付けをしていくしかないのでしょうか。

詳しい方がいましたら教えてください。

Aベストアンサー

・メールアドレスが入力されているセル部分を選択し、Copy します。

・別のシートに、"形式を選択して貼り付け"
  [ 行列を入れ替える ] にチェックを入れてから、ok

・最後に、"名前をつけて保存" する際に、 ファイルの種類を CSV (カンマ区切り)にします。

 以上の作業で保存されたファイルを、「メモ帳」などで開けば良いと思います。


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

人気Q&Aランキング