2017-01-30 12 views
0

Excelから特定のファイルを要求するメールをクライアントに送信します。私は1つの細部を除いてすべてが働いていると私は1つの詳細を考え出すまでこれを使用したくないです。VBA&HTMLBody - 本文と署名の間隔

私の電子メールは、最後に、「やさしさ」と私の署名の間に約3行のスペースがあることを除いて、ほぼ完全に埋められます。なぜこれが起こっているのか分かりません。これは次のようになります。

ありがとうございます。

よろしく、



署名

誰もがそれを修正する方法を知っています。問題はこのラインである

Sub KYC_FATCA() 

Dim OutApp As Object 
Dim OutMail As Object 
Dim cell As Range 
Dim signature As String 

Dim AccOpen As String 
Dim ConDoc As String 
Dim SIP As String 
Dim AFS As String 
Dim W8 As String 
Dim LEI As String 

Application.ScreenUpdating = False 
Set OutApp = CreateObject("Outlook.Application") 

On Error GoTo cleanup 
For Each cell In Columns("G").Cells.SpecialCells(xlCellTypeConstants) 

    'KYC Account Opening Form 
    If (Cells(cell.Row, "I").Value) = "No" Then 
     AccOpen = "<b>KYC Account Opening Form</b> ." & "<br>" & "<br>" 
    Else 
     AccOpen = "" 
    End If 

    'Constating Document 
    If (Cells(cell.Row, "J").Value) = "No" Then 
     ConDoc = "<b>Constating Document</b> - ." & "<br>" & "<br>" 
    Else 
     ConDoc = "" 
    End If 

    'Statement of Policy and Guidelines (SIP&G) 
    If (Cells(cell.Row, "L").Value) = "No" Then 
     SIP = "<b>Statement of Policy and Guidelines (SIP&G)</b> - " & "<br>" & "<br>" 
    Else 
     SIP = "" 
    End If 

    'Audited Financial Statements (AFS) 
    If (Cells(cell.Row, "M").Value) = "No" Then 
     AFS = "<b>Audited Financial Statements (AFS)</b> - ." & "<br>" & "<br>" 
    Else 
     AFS = "" 
    End If 

    'W-8BEN-E Form 
    If (Cells(cell.Row, "N").Value) = "No" Then 
     W8 = "<b>W-8BEN-E Form</b> - " & "<br>" & "<br>" 
    Else 
     W8 = "" 
    End If 

    'Legal Entity Identifier (LEI) 
    If (Cells(cell.Row, "O").Value) = "Needed" Then 
     LEI = "<b>Legal Entity Identifier (LEI)</b> - " & "<br>" & "<br>" 
    Else 
     LEI = "" 
    End If 


    If cell.Value Like "?*@?*.?*" And _ 
     (Cells(cell.Row, "H").Value) = "yes" Then 

     Set OutMail = OutApp.CreateItem(0) 

     With OutMail 
     .Display 
     End With 
     signature = OutMail.HTMLbody 

     On Error Resume Next 

     With OutMail 
      .To = cell.Text 'Whatever is in cell G 
      .cc = Cells(cell.Row, "C").Value 

      'Testing if statements - The below one works perfect 
      'If LCase(Cells(cell.Row, "Z").Value) = "" Then 
      ' .cc = Cells(cell.Row, "P").Value 
      'End If 

      .Subject = Cells(cell.Row, "A").Value & " - " & "Documentation Request" _ 

      .HTMLbody = "<p style='font-family:calibri;font-size:11pt'>" & "Dear " & Cells(cell.Row, "D").Value & ",<br>" & "<br>" & _ 
      "On behalf of " & Cells(cell.Row, "B").Value & ", please by " & "<b><u>" & Cells(cell.Row, "Q").Text & "</b></u>" & "." & "<br>" & "<br>" & _ 
      AccOpen & _ 
      ConDoc & _ 
      SIP & _ 
      AFS & _ 
      W8 & _ 
      LEI & _ 
      "If you have any questions and/or concerns, please contract your Relationship Manager, " & Cells(cell.Row, "B").Value & "." & "<br>" & "<br>" & _ 
      "Thank you for your attention in this matter." & "<br>" & "<br>" & _ 
      "Regards," & "</p>" & _ 
      signature _ 

      'You can add files also like this 
      If (Cells(cell.Row, "I").Value) = "No" Then 
      .Attachments.Add ("C:doc") 
      End If 
      .Display 'This will open the message itself. If you'd like to send right away, use .Send 

     End With 

     On Error GoTo 0 
     Set OutMail = Nothing 

    End If 

Next cell 

cleanup: 
Set OutApp = Nothing 
Application.ScreenUpdating = True 
End Sub 

答えて

0

:私のコードを以下にリストされている

signature = OutMail.HTMLbody 

これは、署名を取得するための賢い方法ですが、デフォルトの電子メールの本文は、署名上記のカップル空白行を持って、あなたが電子メールを連結するときそれらは含まれています。

私はデバッガでsignatureを視覚的にチェックしてそこにあるものを確認し、望ましくないものはremove the stuffです。簡単な例は次のようになります。

Function RemoveBlankStuff(ByVal text as string) as string 
    text = text.Replace("<P></P>","") 'Remove any empty paragraphs 
    text = text.Replace("<BR>","") 'Remove any line breaks 
    Return text; 
End Function 

signature = RemoveBlankStuff(OutMail.HTMLBody); 

あなたはsignatureで見つけるものに応じて上記の機能を変更する必要があります。

+0

こんにちはJohn、私は問題を引き起こしていたと感じました。それを確認していただきありがとうございます。私はoutlookで私の署名を見直し、最初に空白行や空の段落がありません。署名を引き出すために使用されている実際のコードを再検討できる別の場所はありますか? –

+0

私はそれがどこから来ているかは重要ではないと思います。あなたがそれを変えることはできない。私はHTMLBodyを入力として受け取り、除去したくないものを含む文字列を返す単純な関数を書くだけです。 –

+0

あなたの助けに感謝しますが、私はかなりフォローしていません。私はこれが私がVBAでやった唯一のことだと認めなければならないので、私のコーディングは非常に限られています。 私の署名= OutMail.Htmlbodyの代わりにあなたが書いたコードを入力しましたが、複数のエラーが出ています。私はあなたが私に何か他のことをすることを意味していると確信していますが、私はどのようにするべきか分かりません:( 私は助けに感謝します! –

関連する問題