2017-03-10 8 views
0

単語の文書コンテンツをコピーして電子メールに貼り付けるマクロがあります。その後、Excelから電子メールアドレスと名前を取得し、各自に添付ファイル付きの電子メールを送信します。 (本質的にメールマージ)VBAでOutlook電子メールを送信すると、コロン ":"が付いた件名が空白になります。

問題は、件名にコロン「:」が付いていると、電子メールメッセージが空白として送信されます。電子メールを保存したり、表示したりすると、これは起こりません。すぐに送信される場合にのみ発生します。ここで

コードです:chrです()コマンドを使用するには

Option Explicit 
Sub SendInitialEmail() 
    'directory of email body 
    Dim dirEmailBody As String 

    ' Directory of email template 
    dirEmailBody = _ 
     "C:\Users\me\Documents\Email Body.docx" 

    Dim wordApp As Word.Application 
    Dim docEmail As Document 

    ' Opens email template and copies it 
    Set wordApp = New Word.Application 
    Set docEmail = wordApp.Documents.Open(dirEmailBody) 
    docEmail.Content.Copy 

    Dim outEdit As Document 
    Dim outApp As Outlook.Application 
    Set outApp = New Outlook.Application 
    Dim outMail As MailItem 

    ' The names/emails to send too 
    Dim sendName As String, sendEmail As String, _ 
     ccEmail As String, siteName As String 

    Dim row As Integer 
    ' Was only testing on one row, but generally this pulls from 
    'a sheet of names and email addresses to send an email with attachments too. 
    For row = 1 to 1 

     sendName = actSheet.Cells(row, 1) 
     sendEmail = actSheet.Cells(row, 2) 
     ccEmail = actSheet.Cells(row, 3) 
     siteName = actSheet.Cells(row, 4) 

     Set outMail = outApp.CreateItem(olMailItem) 
     With outMail 
      .SendUsingAccount = outApp.Session.Accounts.Item(1) 
      .To = "myemailaddress to [email protected]" 
      .BodyFormat = olFormatHTML 
      .subject = _ 
       "Is the error cause of a colon: Email test to me" 
       ' it was 

      Set outEdit = .GetInspector.WordEditor 
      outEdit.Content.Paste 
      outEdit.Range(0).InsertBefore ("Dear " & sendName & "," & vbNewLine) 
      ' If I do display, it shows up correctly. 
      ' If I display then send it is fine (workaround) 
      .Send 
     End With 
    Next row 

     docEmail.Close 
     wordApp.Quit 
End Sub 

答えて

0

てみてください、この場合は ":" はChr(58)

は以下を削除
1

です:

Set outEdit = .GetInspector.WordEditor outEdit.Content.Paste outEdit.Range(0).InsertBefore ("Dear " & sendName & "," & vbNewLine)

および追加:

`.Body = "Dear " & sendName & "," & vbNewLine & docEmail.Content.Text` 

コロンは問題ではありません。

+0

それがうまくいった!その後、問題は何でしたか?また、どのようにフォーマットを取り戻すことができますか? – Falthazar

+0

なぜそれが壊れているのか100%ではありません。 outEdit.contentのオブジェクトを調べると、Outlookがクラッシュします。だから、ドキュメントオブジェクトという言葉を調べ、.contents.textがうまくいくことを発見しました。私も.formattedtextを見た。私はまだそれを試していない。私があなたの場合は、 'Set docEmail = wordApp.Documents.Open(dirEmailBody)'の後にブレークポイントを作成します。コードを実行します。それから停止するときは、「表示」メニューでローカルウィンドウを開きます。 docEmailオブジェクトを展開し、必要な属性を探します。 –

関連する問題