Boa tarde, eu tenho uma planilha que é baseada em uma lista de clientes na coluna A, dependendo do sexo na coluna B, ele saúda o cliente de acordo com o gênero, seus e-mails para contato na coluna C que será utilizado na criação do e-mail individual, e da coluna D em diante (originalmente até a Z) por intermédio de uma condição de verdade ou mentira, anexa a quantidade de fundos que tal cliente tem, ao apertar enviar e-mails ele roda fazendo de linha a linha.
funcionava sem problemas até a coluna Z de fundos, mas hj como estou trabalhando com mais fundos habilitados, tentei seguir a lógica da planilha colocando mais condicionantes no início da macro, mas a macro não roda até o final. não estou entendendo, e infelizmente, através dos materiais que eu colhi na internet, não consegui resolver. estou desesperado. rs
Poderiam me ajudar?????????????????
coloquei comentários
'fui obrigado a quebrar as linhas colocando o _ no final delas pq eram muitos fundos e todos não cabiam na mesma linha.
Sub EnviarEmail(ByVal lEmail As String, ByVal lMsg As String, ByVal lSexo As String, ByVal Adamiprev As String, ByVal Adammadv As String, ByVal AdammacroII As String, ByVal Adammsadv As String, ByVal AdammstrII As String, ByVal Alaskabins As String, ByVal Arxden As String, ByVal Atmosaco As String, ByVal AZQatot As String, ByVal AZQaco As String, ByVal AZQluc As String, ByVal AZQpicon As String, _
ByVal AZQtret As String, ByVal Bogarival As String, ByVal Bogariviprev As String, ByVal BTGPccorp As String, ByVal BTGPydi As String, ByVal Icatusabs As String, ByVal JGPcor As String, ByVal JGPcadv As String, ByVal JGPcpaxseg As String, ByVal JGPequ As String, ByVal JGPstr As String, ByVal JGPs As String, ByVal Kadimaxsprev As String, ByVal MilesvirI As String, ByVal MilesviIprev As String, _
ByVal Oceanalbia As String, ByVal Painerashed As String, ByVal Paineirashii As String, ByVal Portofirdi As String, ByVal Safrapmult As String, ByVal sf2tcash As String, ByVal Sharpevfee As String, ByVal Sharpevinst As String, ByVal Sharpiafee As String, ByVal Sharplbia As String, ByVal Sharpls2x As String, ByVal SPXgadv As String, ByVal SPXliprev As String, ByVal Ventorhed As String, _
ByVal VERDEiprev As String, ByVal VERDElb70aspseg As String, ByVal VERDEsadv As String, ByVal VERDEsaxpseg As String, ByVal VERDEulbias As String, ByVal Vincicesadv As String, ByVal Vistafia As String, ByVal Vistamult As String)
Dim OutlookApp As Object 'importando outlook
Dim OutlookMail As Object 'importanto propriedades de mensagem
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.Display
End With
Signature = OutlookMail.HTMLBody
'adicionei mais outro fundos como no primeiro arquivo abaixo
Sexo = lSexo
Adamiprev = lADAMiprev
Adammadv = lADAMmadv
AdammacroII = lAdammacroII
Adammsadv = lADAMmsadv
AdammstrII = lADAMmstrII
Alaskabins = lALASKAbins
Arxden = lARXden
Atmosaco = lATMOSaco
AZQatot = lAZQatot
AZQaco = lAZQaco
AZQluc = lAZQluc
AZQpicon = lAZQpicon
AZQtret = lAZQtret
Bogarival = lBOGARIval
Bogariviprev = lBOGARIviprev
BTGPccorp = lBTGPccorp
BTGPydi = lBTGPydi
Icatusabs = lICATUsabs
JGPcor = lJGPcor
JGPcadv = lJGPcadv
JGPcpaxseg = lJGPcpaxseg
JGPequ = lJGPequ
JGPstr = lJGPstr
JGPs = lJGPs
Kadimaxsprev = lKADIMAxsprev
MilesvirI = lMILESvirI
MilesviIprev = lMILESviIprev
Oceanalbia = lOCEANAlbia
Painerashed = lPAINERAShed
Paineirashii = lPAINERAShii
Portofirdi = lPORTOfirdi
Safrapmult = lSAFRApmult
sf2tcash = lSF2tcash
Sharpevfee = lSHARPEvfee
Sharpevinst = lSHARPEvinst
Sharpiafee = lSHARPiafee
Sharplbia = lSHARPlbia
Sharpls2x = lSHARPls2x
SPXgadv = lSPXgadv
SPXliprev = lSPXliprev
Ventorhed = lVENTORhed
VERDEiprev = lVERDEiprev
VERDElb70aspseg = lVERDElb70aspseg
VERDEsadv = lVERDEsadv
VERDEsaxpseg = lVERDEsaxpseg
VERDEulbias = lVERDEulbias
Vincicesadv = lVINCIcesadv
Vistafia = lVistafia
Vistamult = lVistaMult
'alterei do caro, para prezado
If Sexo = "M" Then 'Define a Forma de Tratamento
Tratamento = "Prezado " & lMsg & "," 'Define a forma de tratamento masculina
Else
Tratamento = "Prezada " & lMsg & "," 'Define a forma de tratamento feminina
End If
'abaixo eu copiei a lógica que estava, para caso coluna em verdade de determinado fundo, buscar em determinada pasta no server a lamina correspondente
With OutlookMail
'Email do destinatário
.To = lEmail
'Título do Email
.Subject = "Relatório Mensal"
.HTMLBody = Tratamento & "<br><br> Seguem os relatórios mensais disponíveis com os resultados dos seus fundos de investimentos no mês de " & Range("i2").Value & "/" & Range("i3").Value & ". <br><br> Atenciosamente, " & Signature
'Anexos
If Adamiprev = 1 Then 'anexa ou não este arquivo. Como a macro está mudando do meu computador para o de vocês, é preciso que o endereço do anexo seja alterado para que o programa funcionar adequadamente.
.Attachments.Add ("\192.168.0.10DadosEOPMacro l RelatóriosRelatórios Mensais2019.11Relatório Mensal l Adam Icatu Prev FIC FIM (2019.11).pdf")
Else
End If
'e assim pra cada arquivo nas pastas da rede
.Send
End With
'Limpa as variáveis
Set iMsg = Nothing
Set iConf = Nothing
Range("E2").Value = Now()
End Sub
'está dando erro a partir da linha de baixo tb.
Public Sub EnviarEmails() 'Função para atribuir um while e verificar as linhas preenchidas. Este código permitirá que a macro funcione mesmo que novos emails sejam adicionados.
Dim iTotalLinhas, i As Integer
iTotalLinhas = Cells(Rows.Count, 1).End(xlUp).Row + 1 'Total de linhas igual a ultima linha preenchida
i = 6 'primeira linha preenchida com os dados dos cotistas
While i < iTotalLinhas 'este código fará com que percorra as linhas até que aconteça algum evento. Este evento é quando a linha atual i deixar de ser menor que o total de linhas preenchidas. Portanto, quando chegar a uma linha vazia, não será enviado emails
'preciso colocar as colunas após a coluna Z, por enquanto até o AZ
EnviarEmail Range("C" & i).Value, Range("A" & i).Value, Range("B" & i).Value, Range("D" & i).Value, Range("E" & i).Value, Range("F" & i).Value, Range("G" & i).Value, Range("H" & i).Value, Range("I" & i).Value, Range("J" & i).Value, Range("K" & i).Value, Range("L" & i).Value, Range("M" & i).Value, Range("N" & i).Value, Range("O" & i).Value, Range("P" & i).Value, Range("Q" & i).Value, Range("R" & i).Value, Range("S" & i).Value, Range("T" & i).Value, Range("U" & i).Value, Range("V" & i).Value, Range("W" & i).Value, Range("X" & i).Value, Range("Y" & i).Value, Range("Z" & i).Value
'PRECISO TB ADICIONAR AS COLUNAS QUE REPRESENTAM OS NOVOS FUNDOS, MAS ESTÁ DANDO ERRO, SEGUE ABAIXO
'Range("AA" & i).Value , Range("AB" & i).Value, Range("AC" & i).Value, Range("AD" & i).Value, Range("AE" & i).Value, Range("AF" & i).Value, Range("AG" & i).Value, Range("AH" & i).Value, Range("AI" & i).Value, Range("AJ" & i).Value, Range("AK" & i).Value, Range("AL" & i).Value, Range("AM" & i).Value, Range("AN" & i).Value, Range("AO" & i).Value, Range("AP" & i).Value, Range("AQ" & i).Value, Range("AR" & i).Value, Range("AS" & i).Value, Range("AT" & i).Value, Range("AU" & i).Value, Range("AV" & i).Value, Range("AW" & i).Value, Range("AX" & i).Value, Range("AY" & i).Value, Range("AZ" & i).Value
'Roda a função da primeira macro, que é enviar emails.
i = i + 1 'Passa para a linha de baixo
Position = i
Wend 'fim do loop
MsgBox "E-mails enviados com sucesso!"
End Sub