2017-11-03 16 views
1

ファイル私は現在、次の基準を持つSINGLE Outlookの電子メールを送信しますVBAマクロをしています:受信者がシート1の列Dに記載されているし、すべてのIされているは、Excelから複数の受信者とOutlookの電子メールを送信

A.をoutlookのTOフィールドに各送信者を連結することが必要です。ただし、これらの受信者は動的であり、番号の点で異なる可能性があります。ケースでは、これらの列から電子メールアドレスを追加または削除することがあります。

B.私は、OutlookのBODYフィールドにSheet2の内容を貼り付ける必要があります。 C.署名付きの電子メールを生成する必要があります。

これまでのところ、私はこのコードを持っていますが、それはしかし働いていない:

Option Explicit 

Sub SendEmail() 

Dim OutlookApplication As Outlook.Application 
Dim OutlookMailItem As Outlook.MailItem 
Dim outlookInspector As Outlook.Inspector 
Dim wdDoc As Word.Document 
Dim Recipient As Range 
Dim CC As Range 

Application.ScreenUpdating = False 

Set OutlookApplication = New Outlook.Application 
Set OutlookMailItem = OutlookApplication.CreateItem(0) 

'On Error GoTo cleanup 

    Workbooks("ConfigFile.xlsm").Sheets("Sheet1").Activate 

    Range("D2").Select 
    Set Recipient = Range(ActiveCell, ActiveCell.End(xlDown)) 

    Range("E2").Select 
    Set CC = Range(ActiveCell, ActiveCell.End(xlDown)) 

    With OutlookMailItem 
     .Display 
     .To = Recipient 
     .CC = CC 
     .subject = ThisWorkbook.Sheets("Sheet1").Range("F2").Value 
     .Body = ThisWorkbook.Sheets("Sheet1").Range("G2").Value 

     Set outlookInspector = .GetInspector 
     Set wdDoc = outlookInspector.WordEditor 

     wdDoc.Range.InsertBreak 

     Sheet2.Activate 
     Range("A:A").CurrentRegion.Copy 

     wdDoc.Range.Paste 

    End With 


'cleanup: 
    'Set OutlookApplication = Nothing 
    'Application.ScreenUpdating = True 

End Sub 
+0

何が問題なのですか?それはエラーを投げているのですか?どの行? – Roosz0rd

+0

With With OutlookMailItem内のすべてが機能していないと思います。私は、エラーを修正する正しいコードの組み合わせが何か分かりません。それは "ランタイムエラー13"と言います。 –

+0

teエラーが発生した場合、どの行がハイライトされますか? – Roosz0rd

答えて

0

を置き換える、あなたの質問の最初の部分に答えるために.To & .CCと:

Dim myDelegate As Outlook.Recipient 

    For Each sTo In Recipient 
     Set myDelegate = OutlookMailItem.Recipients.Add(sTo) 
     myDelegate.Resolve 
     If Not myDelegate.Resolved Then 
      myDelegate.Delete 
     End If 
    Next sTo 

    For Each sTo In CC 
     Set myDelegate = OutlookMailItem.Recipients.Add(sTo) 
     myDelegate.Type = olCC 
     myDelegate.Resolve 
     If Not myDelegate.Resolved Then 
      myDelegate.Delete 
     End If 
    Next sTo 

これは、あなたが& E列Dを持っている人々のそれぞれをループします関連するフィールドに入力して、あなたがこの人物を削除する場合は、上記の各ループでIfの文を削除するだけです。

他の2つの質問は別々にお願いしますが、GoogleのすばやいRCHはあなたに私はあなたの質問に答えるために.To & .CCに使用何

For pasting data from Excel to Outlook Body

For Email signature

を助けるかもしれない同様の問題を発見し、あなたは彼らが将来的にあなたを助けることがあり、それらを見てみたいことがあり

+0

確認のためだけ: With、outcmailitem内のto、and ccの値を変更しますか?右? –

+0

はい、最初のループで置き換えられる '.To'と2番目のループで置き換えられる' .CC' @RouellaMayGabineteAmponin –

+0

正常に動作しました!ありがとう! –

0

私は1つの文字列にすべてのこれらの区切りの受信者を追加することでこれを解決しました。セルでセルを取得し、それらを文字列に追加します。 ";"必要な場合:

範囲で動作するかどうかわかりません。私はそれが問題だと思います。

希望すると助かります!

+0

こんにちは!あなたが意味することを私に見せてもらえますか?私はVBAの新機能であり、まだコード操作に関してその専門家ではありません。前もって感謝します。 –

+0

受信者の範囲を追加するだけでは、おそらく ";" (異なる受信者を分離するため)。また、 '.to'が範囲を扱うことができるかどうかはわかりません。私はそれが文字列の入力を求めると思った。だから私は文字列を作成し、すべてのセルの値を取得し、その文字列に ";"すべての受信者の間に働くかもしれない(私のために働く)。 – KawaRu

関連する問題