2017-01-10 18 views
0

vbaで1つ以上の添付ファイルを使用して複数の受信者にメールを送信するためのマクロをOutlookで実行しています。私はマクロに精通していないので、さまざまな情報源からの入力を受けて、最終的なコードを以下に示します。vbaマクロによる添付ファイル付きのメール

しかし、私はmax。 3つの添付ファイルの制限はすべての受信者にとって一定ですが、1つまたは2つのファイルのみを添付する必要があるときはいつでもコメントすることで無効にする必要があります。 は、マクロが自動的に入力され、1人の受信者が1つの添付ファイルを持っているし、次の受信者が2つのまたは3の添付ファイル

Sub SendMail() 

    Dim objOutlook As Object 
    Dim objMail As Object 
    Dim ws As Worksheet 

    Set objOutlook = CreateObject("Outlook.Application") 
    Set ws = ActiveSheet 

    For Each cell In ws.Range("A2:A1000") 

     Set objMail = objOutlook.CreateItem(0) 

     With objMail 
      .To = cell.Value 
      .Cc = cell.Offset(0, 1).Value 
      .Bcc = cell.Offset(0, 2).Value 
      .Subject = cell.Offset(0, 3).Value 
      .Body = cell.Offset(0, 4).Value 
      .Attachments.Add cell.Offset(0, 5).Value 
      '.Attachments.Add cell.Offset(0, 6).Value 
      '.Attachments.Add cell.Offset(0, 7).Value 
      .Send 
     End With 

     Set objMail = Nothing 
    Next cell 

    Set ws = Nothing 
    Set objOutlook = Nothing 

End Sub 
+0

あなたがしたいことがある場合は、空白などを残した値に応じて入力を取る方法はありますメールを送った後、2〜3秒待ってから追加してください。非常に多くのメールを送信する見通しが速すぎることがあります。 –

+0

@EganWolf - 私は、送信する時間に関しては何の問題も生じていません。 40人の受信者を郵送するのに2秒かかることはほとんどありません。私は何かを追加する必要がある場合私に教えてください? – Irvin

+0

実際、私はそれをテストしたことがありません。私は、添付ファイル付き約30通のメールを送信していた他の人が書いたマクロを使用して更新していました。コメントがありました。 –

答えて

1
Dim i As Long, c As Range 
'.... 
With objMail 
    .To = cell.Value 
    .Cc = cell.Offset(0, 1).Value 
    .Bcc = cell.Offset(0, 2).Value 
    .Subject = cell.Offset(0, 3).Value 
    .Body = cell.Offset(0, 4).Value 
    For i = 5 to 6 
     Set c = cell.Offset(0, i) 
     If c.Value <> "" Then .Attachments.Add c.Value 
    Next i 
    .Send 
End With 
'.... 
+0

あなたは 'With'の中で' With'を使いました.VBAが '.Attachments.Add .Value'の読み方を知らないと確信しています。 –

+0

@EganWolf - 私は、ヘッドアップに感謝しました –

+0

今すぐ動作するはずです。 –

関連する問題