Notifications
Clear all

Macro email complemento

29 Posts
3 Usuários
0 Reactions
2,866 Visualizações
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Ola,

Seria possivel me corrigir a linha de comando abaixo, ta dando um erro. Sendo que a primeira está ok, porem quero que a segunda, que ficará ativa, se baseie pelas celulas E1 e I1.

'.Attachments.Add "C:UsersAndreDesktopPedidosLojista.xlsx"

.Attachments.Add "C:UsersAndreDesktopPedidos" & ActiveSheet.Range("E1").Value & ActiveSheet.Range("I1").Value

Grato

Andre

 
Postado : 27/12/2015 9:56 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde André

Para manter a organização do fórum, não crie vários tópicos sobre o mesmo assunto.
Pensei unir este tópico a outros, mas fiquei até em dúvida, pois constatei que você tem várias tópicos sobre o mesmo assunto, contrariando as regras do fórum.

O usuário deve fazer vários testes antes de marcar o tópico como Resolvido, mas mesmo depois de trancado, se for necessário reabrir o tópico, basta enviar uma MP para um dos moderadores.

[]s

Patropi - Moderador.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 27/12/2015 11:39 am
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

desculpe, mas é que sempre surge uma nova ideia, como ja estava fechado dai abri outro,

 
Postado : 27/12/2015 11:45 am
(@mprudencio)
Posts: 2749
Famed Member
 

Suponha que vc tenha isso nas celulas 10 e 20 esse comando deve lhe retornar algo assim 1020 é isso mesmo que vc pretende?

E a informação é pra pegar mesmo na planilha ativa?

Mas para teste tente trocar activesheet por Sheets("Nome da Planilha") pode ser que funcione.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 27/12/2015 2:37 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Suponha que vc tenha isso nas celulas 10 e 20 esse comando deve lhe retornar algo assim 1020 é isso mesmo que vc pretende?

E a informação é pra pegar mesmo na planilha ativa?

Mas para teste tente trocar activesheet por Sheets("Nome da Planilha") pode ser que funcione.

Grato por mais esta, coloca na conta que depois eu pago. Ficou o que eu queria !!!

.Attachments.Add "C:UsersAndreDesktopPedidos" & Sheets("MAPA").Range("F1").Value & Sheets("MAPA").Range("I1").Value

Grato

Andre

 
Postado : 27/12/2015 3:10 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Ola M.Prudencio, tem alguma dica pra isso aqui:

.Attachments.Add "C:UsersAndreDesktopPedidos Gauer" & Sheets("MAPA").Range("F1").Value & Sheets("MAPA").Range("I1").Value
.Attachments.Add "C:UsersAndreDesktopPedidos Gauer" & Sheets("MAPA").Range("F2").Value & Sheets("MAPA").Range("I2").Value
.Attachments.Add "C:UsersAndreDesktopPedidos Gauer" & Sheets("MAPA").Range("F3").Value & Sheets("MAPA").Range("I3").Value

Se eu rodar ele anexa os 3 arquivos beleza, porem eu tava aqui pensando com meus botoes, e queria que ficasse de uma forma que se a 2 linha e 3 linha estivessem vazias, entao nao daria o erro que ta dando, caso eu nao apresente o arquivo nestas linhas. Assim sendo caso a linha 2 e 3 estejam vazias, ele desconsideraria os 2 Attachment.Add. ultimos.

Pode resolver isso ?

Grato

 
Postado : 27/12/2015 3:50 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

MPrudencio, matei aqui o problema.

.Attachments.Add "C:UsersAndreDesktopPedidos Gauer" & Sheets("MAPA").Range("F1").Value & Sheets("MAPA").Range("I1").Value

If Sheets("MAPA").Range("F2").Value > 0 Then
.Attachments.Add "C:UsersAndreDesktopPedidos Gauer" & Sheets("MAPA").Range("F2").Value & Sheets("MAPA").Range("I2").Value
Else
.Display
End If

If Sheets("MAPA").Range("F3").Value > 0 Then
.Attachments.Add "C:UsersAndreDesktopPedidos Gauer" & Sheets("MAPA").Range("F3").Value & Sheets("MAPA").Range("I3").Value
Else
.Display
End If

.Display 'Send

Ja rodei e testei linha 2 cheia e 3 vazia - resultado OK

Linha 2 cheia e linha 3 cheia , resultado Ok

Linha 2 e 3 vazias - resultado OK tambem

Grato e até a proxima.

Andre

 
Postado : 27/12/2015 4:44 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Ainda bem que nao fechei ainda este tópico.

Coloquei numa celula "I4", na mesma aba de "MAPA" o acrescimo da macro, porem esta dando o erro e ao depurar me mostar que é na .sEnvio, portanto podem me mostrar o erro , pois ja tentei aqui varias variantes.

I4 = poderá estar como Display ou Send

Sub X_Lojas()

'Setting up the Excel variables.
Dim olApp As Object
Dim olMailItm As Object
Dim iCounter As Integer
Dim Dest As Variant
Dim SDest As String
Dim Estado As String
Dim BuscaEstado As Range
Dim AbrevEstado As String

Dim sEnvio
sEnvio = ActiveSheet.Range("I4")

.....
....
...

Erro apresentado:

Erro em tempo de execucao 438
O Objeto nao aceita esta propriedade ou método

Linha da Macro onde mostra o erro:

.sEnvio

Grato

Andre

 
Postado : 27/12/2015 5:55 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Tenho a impressao que ta faltando coisa ae

Tente assim

sEnvio = ActiveSheet.Range("I4").value

Uma dica que eu uso bastante em meus codigos, sou inciante mas vejo que isso evita muitos erros.

Declare uma variavel para a aba

Ao inves de usar activesheet.range use algo assim

Dim Wmap as worksheet
Dim SEnvio as Variant

Set Wmap = Sheets("Mapa")
SEnvio =Wmap.range("I4").value

Eu sempre que vou usar algo em uma aba especifica armazeno o nome da aba em uma variavel.

Mas eu acho que o erro é basicamente a falta do .value no final da instrução.

....

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 27/12/2015 6:15 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

assim continua dando erro

Dim sEnvio
sEnvio = ActiveSheet.Range("I4").value

em :

.sEnvio

trava aqui

 
Postado : 27/12/2015 6:29 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Dim Wmap As Worksheet
Dim SEnvio As Variant
Set Wmap = Sheets("Mapa")
SEnvio = Wmap.Range("I4").Value

Objeto nao aceita esta propriedade ou metodo

erro em :

.sEnvio

 
Postado : 27/12/2015 6:32 pm
(@mprudencio)
Posts: 2749
Famed Member
 

De novo tentou a dica anterior ao inves de activesheet usar Sheet ("Nome da Aba")

Tente as outras sugestões que passei.

Esse é o tipo de codigo que nao consigo testar pq nao uso outlook para enviar email.

Uso apenas webmail.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 27/12/2015 6:51 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

usei sim as 2 dicas que vc passou ve ai acima .

 
Postado : 27/12/2015 6:58 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Coloca o codigo inteiro....

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 27/12/2015 7:07 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 
Sub X_Lojas()


'Setting up the Excel variables.
Dim olApp       As Object
Dim olMailItm   As Object
Dim iCounter    As Integer
Dim Dest        As Variant
Dim SDest       As String
Dim Estado      As String
Dim BuscaEstado As Range
Dim AbrevEstado As String
Dim Envio
    Envio = Sheets("MAPA").Range("I4").Value
   

    Estado = Application.Caller

Sheets(Estado).Visible = True

    Set BuscaEstado = ThisWorkbook.ActiveSheet.Range("A3:A29").Find(Estado, LookIn:=xlValues, LookAt:=xlWhole)
    
    If BuscaEstado Is Nothing Then
        MsgBox "Estado não localizado"
        GoTo Fim
    Else
        AbrevEstado = ThisWorkbook.Worksheets("MAPA").Cells(BuscaEstado.Row, 1).Value
    End If
    
    'Quero que aqui, ao inves de ter RJ tenha a variavel Estado que vai estar associado ao click na regiao do mapa.
    ThisWorkbook.Worksheets(AbrevEstado).Select
   
    iCounter = 1
   
    'Create the Outlook application and the empty email.
    Set olApp = CreateObject("Outlook.Application")
    Set olMailItm = olApp.CreateItem(0)
   
    'Using the email, add multiple recipients, using a list of addresses in column C.
    With olMailItm
       For iCounter = 1 To WorksheetFunction.CountA(Columns(3))
       
       ' Sheets("Email").Select
               SDest = SDest & ";" & Cells(iCounter, 3).Value
       
       Next iCounter
       
    'Do additional formatting on the BCC and Subject lines, add the body text from the spreadsheet, and send.
       .BCC = SDest
       .Subject = "Tabela de Pedidos"
       '.Body = "Ola"
        .Body = "Olá Lojista! Segue anexo nossa Tabela de Pedidos, fico no seu Aguardo." & vbCrLf & _
        "" & vbCrLf & _
        "Seu Pedido Mímimo é de R$ 600,00, a a forma de envio é F.O.B" & vbCrLf & _
        "" & vbCrLf & _
        "ATENÇÃO" & vbCrLf & _
        "" & vbCrLf & _
        "Seu Pedido somente será liberado depois de sua Aprovação, pois encaminharei um esboço do seu pedido por E-Mail." & vbCrLf & _
        "" & vbCrLf & _
        "Obrigado!" & vbCrLf & _
        "" & vbCrLf & _
        "André Luiz" & vbCrLf & _
        "Fone: (21)3564-2347" & vbCrLf & _
        "WhatsApp: (21)98799-3381" & vbCrLf & _
        "atendimento-rj@gauerdobrasil.com.br"
       
       'troque o diretorio do documento que queira enviar 'add' anexo.
       .Attachments.Add "C:UsersAndreDesktopPedidos Gauer" & Sheets("MAPA").Range("F1").Value & Sheets("MAPA").Range("I1").Value
   
 If Sheets("MAPA").Range("F2").Value > 0 Then
       .Attachments.Add "C:UsersAndreDesktopPedidos Gauer" & Sheets("MAPA").Range("F2").Value & Sheets("MAPA").Range("I2").Value
Else
       .Envio  'Display
End If
  
 If Sheets("MAPA").Range("F3").Value > 0 Then
       .Attachments.Add "C:UsersAndreDesktopPedidos Gauer" & Sheets("MAPA").Range("F3").Value & Sheets("MAPA").Range("I3").Value
Else
       .Envio  'Display
End If
       
       .Envio  'Display  'Send
   
Sheets("MAPA").Select
   
Sheets(Estado).Visible = False
   
   End With

    Exit Sub
Fim:
   'Clean up the Outlook application.
   Set BuscaEstado = Nothing
   Set olMailItm = Nothing
   Set olApp = Nothing
   
  
End Sub
 
Postado : 27/12/2015 7:10 pm
Página 1 / 2