2017-06-19 13 views
0

これはコードです。Excelシートから複数の受信者名を取得する

これは1人の受信者で機能します。

Sub Sendmail() 

    Dim olItem As outlook.MailItem 
    Dim xlApp As Excel.Application 
    Dim xlBook As Excel.Workbook 
    Dim xlSht As Excel.Worksheet 
    Dim sPath As String 
    Dim iRow As Long 

    sPath = "***" 
' // Excel 
    Set xlApp = CreateObject("Excel.Application") 
' // Workbook 
    Set xlBook = xlApp.Workbooks.Open(sPath) 
' // Sheet 
    Set xlSht = xlBook.Sheets("Sheet1") 

' // Create e-mail Item 
    Set olItem = Application.CreateItem(olMailItem) 

    With olItem 
     .To = xlSht.Range("A1") 
     .CC = xlSht.Range("c1") 
     .subject = "test" 
     .Display 
     .Send 
    End With 

' // Close 
    xlBook.Close SaveChanges:=True 
' // Quit 
    xlApp.Quit 

    Set xlApp = Nothing 
    Set xlBook = Nothing 
    Set xlSht = Nothing 
    Set olItem = Nothing 

End Sub 

問合せ:私の要件ごとに受信者の名前は、リンクされたExcelシートから を取られるべきです。

Excel シートの列Aに配置されたすべての受信者メールアドレス。

これらの値は動的であり、任意の数のメールを含む可能性があります。 Id。

例:

カラムA:

[email protected] [email protected] [email protected] [email protected]

はここで4つの値は、メールは今、そこにあります同時にこれらすべての4人の 受信者に送信する必要があります。

だからのフィールドに含まれている必要があります [email protected]; [email protected]; [email protected]; [email protected]

コードはまで列Aをダウントラバースすることができなければなりません最後 行とセミコロンで区切られたすべての値を連結(;)

+0

'For'ループを使用。 –

+0

ありがとうございます。forループメールは一度に1人の受信者に送信できます。 – Sai

答えて

1

受信者フィールドのためにこれを試してください:

.To = Join(xlApp.Transpose(xlSht.Range("A1", xlSht.Range("A9999").End(xlUp))), ";") 
+0

@ A.S.H、これは魔法のように動作します:) – Sai

+1

@Sai歓迎、喜んで歓迎します。あなたの質問に対する答えはこれまで受け入れていないことに気付きました。あなたの質問を解決するときに答えを受け入れることを考えてください。答えの左上にある灰色のチェックマークをチェックして緑色にします。ありがとう:) –

+1

私はそれがこの方法で動作することを知らなかった!再度、感謝します。私は答えを受け入れた: – Sai

関連する問題