Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8595 / 13645 ツリー ←次へ | 前へ→

【32235】メール送信で ccを実現したい row 05/12/10(土) 23:16 質問[未読]
【32236】Re:メール送信で ccを実現したい かみちゃん 05/12/10(土) 23:25 回答[未読]
【32237】Re:メール送信で ccを実現したい row 05/12/11(日) 0:30 発言[未読]
【32240】Re:メール送信で ccを実現したい かみちゃん 05/12/11(日) 0:52 発言[未読]
【32255】Re:メール送信で ccを実現したい row 05/12/11(日) 18:55 発言[未読]
【32260】Re:メール送信で ccを実現したい かみちゃん 05/12/11(日) 22:09 発言[未読]
【32270】Re:メール送信で ccを実現したい row 05/12/12(月) 0:27 発言[未読]
【32274】Re:メール送信で ccを実現したい かみちゃん 05/12/12(月) 7:24 発言[未読]
【32396】Re:メール送信で ccを実現したい row 05/12/14(水) 0:58 発言[未読]

【32235】メール送信で ccを実現したい
質問  row  - 05/12/10(土) 23:16 -

引用なし
パスワード
   仕事上で、メール送信をする必要があり
このサイト(http://www.hi-ho.ne.jp/babaq/basp21.html
にて、BASP21で送信するマクロを作成しました。

しかし、宛先とCCの両方を指定して
複数送信したいのです。

具体的には、部長   は 宛先
      課長や係長は CC
という感じです。

思考の渦に巻き込まれて先に、進めなくなりましたので
どなたか教えてください。

以下が、私の作成したマクロです。
BASP21のマクロから若干変更してあります
-----------------------------------------------------------------------

  Dim ret As String
  Dim szLogfile As String
  Dim szServer As String, szTo As String, szFrom As String
  Dim szSubject As String, szBody As String, szFile As String
  Dim flBody
  Dim i As Long
  Dim fs, a As Object
  Dim 宛先人数 As Variant
  宛先人数 = Worksheets(1).Cells(1, 5)
  Dim j As Variant
  For j = 1 To 宛先人数
   Worksheets(1).Cells(2 + j, 1) = "○"
  Next j


On Error GoTo Err_Handler
  Set fs = CreateObject("Scripting.FileSystemObject")
  Set a = fs.CreateTextFile(Worksheets("本文").Cells(15, 1), True)
  
  
  ' メール送信結果を記録するファイル名を指定します。
  szServer = Worksheets("本文").Cells(11, 1) ' SMTPサーバ名
  '
  With Worksheets("宛名及び置換文字")
  If .Cells(1, 3) & .Cells(1, 7) = "" Then
    MsgBox "タイトルとFROMを入力してください"
    GoTo Exit_sub
  Else
    If MsgBox("タイトル:" & .Cells(1, 3) & "、送信元" & .Cells(1, 7) & "で良いですか?", _
      vbOKCancel, "確認") = vbCancel Then
      GoTo Exit_sub
    End If
  End If
  szSubject = .Cells(1, 3)  ' 件名
  szFrom = .Cells(1, 7)  ' 送信元
  szTo = .Cells(3, 5)  ' 宛先
  If 宛先人数 > 1 Then  ' cc アドレスがある場合は、それを 作成する
     For i = 3 To 宛先人数
      If .Cells(i, 1) = "○" Then
        szTo = szTo & vbTab & "cc" & vbTab & .Cells(i, 5)  ' 宛先
      End If
     Next i
  End If         ' cc アドレス作成終了
  MsgBox szTo
  GoTo owari99
  szBody = .Cells(3, 6) ' 本文
  szFile = .Cells(3, 11) '添付ファイル
  ret = SendMail(szServer, szTo, szFrom, szSubject, szBody, szFile)
  If Len(ret) <> 0 Then
    a.WriteLine (Date & " " & Time & " " & ret & "−" & szTo & "−" & szBody)
    'MsgBox "エラー" & ret & "−" & .Cells(i, 4)
    .Cells(3, 1) = "エラー"
    Else
    .Cells(3, 1) = "完了"
  End If
End With
  ' パラメータエラーのときは、戻り値にエラーメッセージが返ります。
  
  MsgBox "終了"
  GoTo Exit_sub

Err_Handler:
  MsgBox Err.Description, vbCritical, "Error"
  GoTo Exit_sub

Exit_sub:
  a.Close

owari99:

【32236】Re:メール送信で ccを実現したい
回答  かみちゃん E-MAIL  - 05/12/10(土) 23:25 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>仕事上で、メール送信をする必要があり
>このサイト(http://www.hi-ho.ne.jp/babaq/basp21.html
>にて、BASP21で送信するマクロを作成しました。
>
>しかし、宛先とCCの両方を指定して
>複数送信したいのです。
>
>具体的には、部長   は 宛先
>      課長や係長は CC
>という感じです。

私は、まったく同じことを以下のような感じで実現しています。
Ccの宛先用に変数を設けて、設定していくのがポイントです。

 Dim szCc As String
 '〜省略〜
 If 宛先人数 > 1 Then  ' cc アドレスがある場合は、それを 作成する
  szCc = "cc"
  For i = 3 To 宛先人数
   If .Cells(i, 1).Value = "○" Then
    szCc = szCc & vbTab & .Cells(i, 5).Value  ' 宛先
   End If
  Next i
  szTo = szTo & vbTab & szCc
 End If

【32237】Re:メール送信で ccを実現したい
発言  row  - 05/12/11(日) 0:30 -

引用なし
パスワード
   >私は、まったく同じことを以下のような感じで実現しています。
>Ccの宛先用に変数を設けて、設定していくのがポイントです。

おっしゃるとおりマクロを変更しました。
が、pop認証で失敗してしまいました。
送信アドレスは、yahooで 事前にメール受信しておいて
pop before smtpはクリアしているハズなんですが・・・

気になったのが、宛先アドレスが

部長アドレス cc        課長アドレス

となっていて ccから課長アドレスまでが長い空白となっており
カンマではないことです。

これで BASP21は受け入れているのでしょうか・・・

-----------------------------------------------------------
  szTo = .Cells(3, 5)  ' 宛先
  szcc = "cc"
  If 宛先人数 > 1 Then  ' cc アドレスがある場合は、それを 作成する
     For i = 4 To 2 + 宛先人数
      If .Cells(i, 1).Value = "○" Then
        szcc = szcc & vbTab & .Cells(i, 5).Value  ' 宛先
        
      End If
     Next i
  End If         ' cc アドレス作成終了
  szTo = szTo & vbTab & szcc

【32240】Re:メール送信で ccを実現したい
発言  かみちゃん E-MAIL  - 05/12/11(日) 0:52 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>Pop認証で失敗してしまいました。
>送信アドレスは、Yahooで 事前にメール受信しておいて
>Pop Before SMTPはクリアしているハズなんですが・・・
>
>気になったのが、宛先アドレスが
>
>部長アドレス cc        課長アドレス
>
>となっていて ccから課長アドレスまでが長い空白となっており
>カンマではないことです。

BSMTPを使う場合、複数の宛先に送付するときは、アドレスを「タブ区切り」で指定します。
従いまして、カンマやセミコロン区切りではありません。
「長い空白」というのは、Tab区切りのTabそのものではないでしょうか?

セルの値に空白や全角文字が入っていないか、複数宛先で指定しない場合(Ccを
1件にしてみる)は、個々人に送れるか(メールアドレスの入力が間違っていない
かの確認ができる)を確認してみてください。

私のほうではできていますので。

【32255】Re:メール送信で ccを実現したい
発言  row  - 05/12/11(日) 18:55 -

引用なし
パスワード
   >こんにちは。かみちゃん です。

かみちゃんさん、度々レス頂きまして感謝致します。

いろいろ思考錯誤していますが、
szFrom = .Cells(1, 7) & vbTab & "userid:pass"

を設定すると、smtpの問題はクリアされて
c:\log.txtには、エラーが書き込まれなくなりました。

しかし、PCにインストールしてある
ノートンが ブロックしてしまい、送信できませんでした。

ノートンを無効にすれば、送信できると思いますが、
現在は、ホットスポット(公衆無線LANサービス)から
思考錯誤していますので、ノートンを無効にする訳にも行かない為
自宅に戻った時に、無効にして試して見ます。

>「長い空白」というのは、Tab区切りのTabそのものではないでしょうか?

おっしゃるとおりです。
Tab=8文字くらいの空白でした。

>私のほうではできていますので。

情報ありがとうございます。

切り分けとして、一度に沢山の事をやろうとしていましたが、
CC以前の問題で、宛先にさえ送れないので、
まずは そこからちゃんと出来るように努力してみたいと思います。

【32260】Re:メール送信で ccを実現したい
発言  かみちゃん E-MAIL  - 05/12/11(日) 22:09 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>いろいろ思考錯誤していますが、
>szFrom = .Cells(1, 7) & vbTab & "userid:pass"
>
>を設定すると、smtpの問題はクリアされて
>c:\log.txtには、エラーが書き込まれなくなりました。

BSMTP.DLLで、Pop Before SMTPをクリアする方法としては、メール送信する前に、RcvMailで一度受信してしまうという方法もあるようです。

>しかし、PCにインストールしてある
>ノートンが ブロックしてしまい、送信できませんでした。

私は自宅は、ウィルスバースター、会社は、ノートンアンチウィルスを導入してい
ますが、どちらもうまく送信できています。
なので、ノートンがブロックするというのは、経験したことがありません。

>切り分けとして、一度に沢山の事をやろうとしていましたが、
>CC以前の問題で、宛先にさえ送れないので、
>まずは そこからちゃんと出来るように努力してみたいと思います。

そうですね。
まず、宛先1箇所で送信できるようになることが先決かもしれませんね。
(できていれば、いいのですが・・・)

【32270】Re:メール送信で ccを実現したい
発言  row  - 05/12/12(月) 0:27 -

引用なし
パスワード
   >こんにちは。かみちゃん です。

かみちゃんさん、度々レス頂きまして感謝致します。

ノートンは、発信電子メールスキャンを無効と
ノートン アンチ spamを無効にして
やっと警告がでなくなりました。

が、やはりテストしたアドレスには送信されませんでした。

発信側が、yahooのアドレスで
szFrom = .Cells(1, 7) & vbTab & "userid:pass" & vbTab & "LOGIN"
としているので認証は、成功しているのに。
(パスを、わざと違うパスにすると失敗しているので認証は
 成功しています)

今日は、寝て
明日また やってみます。

【32274】Re:メール送信で ccを実現したい
発言  かみちゃん E-MAIL  - 05/12/12(月) 7:24 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>が、やはりテストしたアドレスには送信されませんでした。

私の場合、Yahoo!アドレスは、会社からでは送信できないことが確認できています。
これは、たぶん、会社のメールサーバーの設定だと思います。詳しいことはわからないのですが・・・

今回の原因がよくわからないので、
一度、下記のURLを参考にして、できるだけコードを修正せずに、送信できるか
どうか確認してみるのもいいかもしれません。
http://homepage1.nifty.com/gak/MSTips/multimail.htm

単純に、SMTPサーバー名の誤りかもしれない?そんなことはないですよね?
以上、何か参考になれば・・・

【32396】Re:メール送信で ccを実現したい
発言  row  - 05/12/14(水) 0:58 -

引用なし
パスワード
   >これは、たぶん、会社のメールサーバーの設定だと思います。詳しいことはわからないのですが・・・

なるほど、会社アドレスで送信する前に
yahooアドレスから送信しようとしましたが
ダメでした。

会社アドレスで、送信しようとしましたが
うまく行きませんでした。

>一度、下記のURLを参考にして、できるだけコードを修正せずに、送信できるか
>どうか確認してみるのもいいかもしれません。
>http://homepage1.nifty.com/gak/MSTips/multimail.htm

ありがとうございます。
後で試して見ます。
仕事終わって、この時間で明日も早いので
お礼のみで、失礼します。

>単純に、SMTPサーバー名の誤りかもしれない?そんなことはないですよね?

他にも gooのサーバーでも試しましたが
やはりダメでした。

8595 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free