Notifications
Clear all

Dados do corpo do e-mail saem desalinhados

2 Posts
2 Usuários
0 Reactions
1,037 Visualizações
(@4ntunes)
Posts: 26
Eminent Member
Topic starter
 

existe uma rotina em vba que gera um e-mail automático, apesar dos dados estarem uniformes no código, saem todos desalinhados no outlook, alguém conhece alguma técnica para resolver isso sem ser o HTML ?

Obrigado.

veja codigo :
Private Sub EncerraTurno_Click()
If [b4] = "" Then
MsgBox ("Não podemos enviar e-mail sem o registro do Nome e Matricula do lider")
Else
GravaNaPlanilhaBaseDados
Dim OutApp As Object
Dim OutMail As Object
Dim Texto As String

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

With OutMail
.To = "[email protected]"
.CC = ""
.BCC = ""
.Subject = "Relatório do Turno Leste"
.Body = "Relatório do Turno Leste" & vbCrLf & _
"Líder Responsável :" & PLAN1.Cells(4, 2) & vbCrLf & _
"Data :" & PLAN1.Cells(4, 3) & vbCrLf & _
"Letra :" & PLAN1.Cells(4, 4) & vbCrLf & _
"------------------------------------------------------------" & vbCrLf & _
"1 - Segurança " & PLAN1.Cells( 5, 3) & "|" & vbCrLf & _
"Acidente Com Pessoas.............:" & PLAN1.Cells( 6, 3) & "|" & vbCrLf & _
"Acidente Com Equipamentos.....:" & PLAN1.Cells( 7, 3) & "| " & vbCrLf & _
"Atos Inseguros......................:" & PLAN1.Cells (8, 3) & "|" & vbCrLf & _
"Condições Inseguras...............:" & PLAN1.Cells( 9, 3) & "|" & vbCrLf & _
"Ferramentas e Equipamentos.....:" & PLAN1.Cells(10, 3) & "|" & vbCrLf & _
"Procedimento e Organização.....:" & PLAN1.Cells(11, 3) & "|" & vbCrLf & _
"EPI...................................:" & PLAN1.Cells(12, 3) & "|" & vbCrLf & _
"Posição Pessoal....................:" & PLAN1.Cells(13, 3) & "|" & vbCrLf & _
"Reação Das Pessoas...............:" & PLAN1.Cells(14, 3) & "|" & vbCrLf & _
"Descarrilamento...................:" & PLAN1.Cells(15, 3) & "|" & vbCrLf & _
"Chave Contra......................:" & PLAN1.Cells(16, 3) & "|" & vbCrLf & _
"---------------------------------------------------- -----" & vbCrLf & _
PLAN1.Cells(17, 2) & " " & PLAN1.Cells(17, 3) & "|" & vbCrLf & _
PLAN1.Cells(18, 2) & " " & PLAN1.Cells(18, 3) & "|" & vbCrLf & _
PLAN1.Cells(19, 2) & " " & PLAN1.Cells(19, 3) & "|" & vbCrLf & _
PLAN1.Cells(20, 2) & " " & PLAN1.Cells(20, 3) & "|" & vbCrLf & _
PLAN1.Cells(21, 2) & " " & PLAN1.Cells(21, 3) & "|" & vbCrLf & _
"-----------------------------------------------------------" & vbCrLf & _
.Display 'Utilize Send para enviar o email sem abrir o Outlook
End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing
ZeraCamposDaPlanilha
End If
End Sub

 
Postado : 20/01/2016 7:21 am
(@alminen)
Posts: 77
Trusted Member
 

O desalinhamento vai acontecer naturalmente por dois motivos:
1. O código contém quantidades de caracteres incompatíveis em cada uma das linhas e por causa disso;
2. O output não está em fonte do tipo Monospaced (Courier, Courier New, Fixedsys, Lucida Sans Typewriter, Consolas etc.), o que irá gerar tamanhos diferentes entre as linhas - fontes Monospace têm por padrão a mesma largura para qualquer caractere.

Portanto, por mais que o código possa vir a ser alterado para comportar uma quantidade X de caracteres (limitado a 60 por linha, por exemplo), será necessário que a fonte utilizada no Outlook seja alguma Monospaced.

 
Postado : 20/01/2016 2:12 pm