none
Como enviar planilha por email RRS feed

  • Pergunta

  • Gostaria de uma macro para enviar uma pasta de trabalho inteira para e-mail no hotmail, sem usar o outlook, é possivel?


    • Editado Carlos Milhomem quinta-feira, 28 de março de 2013 15:05 ortografia
    quinta-feira, 28 de março de 2013 15:04

Respostas

  • Você descomentou a linha abaixo para executar o programa?

                .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.live.com"
    

    Leia os comentários do código.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    • Marcado como Resposta Carlos Milhomem segunda-feira, 1 de abril de 2013 12:18
    domingo, 31 de março de 2013 22:41
    Moderador

Todas as Respostas

  • Adapte o exemplo abaixo:

    Sub EnviarEmailCDO()
        Dim oMensagem As Object
        Dim oConfiguração As Object
        Dim sCorpo As String
        Dim vFields As Variant
    
        Set oMensagem = CreateObject("CDO.Message")
        Set oConfiguração = CreateObject("CDO.Configuration")
    
            oConfiguração.Load -1 'Padrões CDO
            Set vFields = oConfiguração.Fields
            With vFields
                .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
                
                'Se quiser enviar um e-mail pelo Windows Live:
                '.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.live.com"
    
                'Se quiser enviar um e-mail pelo Yahoo, substiua a linha acima por:
                '.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")= " smtp.mail.yahoo.com"
    
                'Se quiser enviar um e-mail pelo GMail, substiua a linha acima por:
                .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
    
                .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
                .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
                
                'Abaixo você preencherá o nome do usuário. Se o seu e-mail é @hotmail, @xbox, @live,
                '@msn ou outros serviços associados à Windows Live, é necessário que você preencha
                'o seu endereço completo no campo abaixo.
                'Se você usa GMail, você deve suprimir o @gmail.com e no campo abaixo deixar apenas
                'o nome do usuário.
                'Em relação ao Yahoo, não testei porque não possuo uma conta. No entanto, provavelmente
                'é necessário especificar o endereço de e-mail completo uma vez que o Yahoo possui variações
                'como @yahoo.com, @yahoo.com.br, @yahoo.co.uk, entre outros.
                .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "seuendereco@gmail.com"
                .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "suasenha"
                .Update
            End With
    
        sCorpo = "Olá mundo!" & vbNewLine & _
          vbNewLine & _
          "Esta é a linha 1." & vbNewLine & _
          "Esta é a linha 2." & vbNewLine & _
          "Esta é a linha 3." & vbNewLine & _
          "Esta é a linha 4." & vbNewLine
          
        With oMensagem
            Set .Configuration = oConfiguração
            .To = "benzadeus4@ambienteoffice.com.br" 'mude aqui para alterar o destinatário
            .CC = "" 'com cópia
            .BCC = "" 'com cópia oculta
            .From = """Benzadeus"" <benzadeus4@ambienteoffice.com.br>"
            .Subject = "Assunto do e-mail"
            .TextBody = sCorpo
            .AddAttachment "c:\temp\abc.txt"
            .Send
        End With
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sexta-feira, 29 de março de 2013 14:41
    Moderador
  • Não conseguir. Para nesta linha

    .AddAttachment "c:\temp\abc.txt"

    inclusive ja visitei o site: ambienteoffice, aprendir muito sobre vba, ótimo site.

    Se possivel Felipe, poste, adapte para mim com este exemplo de email no hotmail; mmm22@, e retira o  que não for necessário para envio no hotmail.

    Abraços

    sábado, 30 de março de 2013 10:48
  • Você alterou o caminho c:\temp\abc.txt para o caminho do arquivo que você quer anexar?

    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sábado, 30 de março de 2013 11:27
    Moderador
  • Não conseguir agora esta parando no código;  

    .Send

    Com a mensagem com descrito abaixo

    Erro em tempo de execução  '-2147220973 (80040213)':
    Falha na conexão do transporte com o servidor.

    sábado, 30 de março de 2013 18:59
  • Qual é o seu provedor?

    Exemplo: se seu e-mail é joao@hotmail.com, seu provedor é o Hotmail.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    domingo, 31 de março de 2013 12:29
    Moderador
  • O Hotmail.

    Obrigado Felipe pelas atenção!

    domingo, 31 de março de 2013 18:10
  • Você descomentou a linha abaixo para executar o programa?

                .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.live.com"
    

    Leia os comentários do código.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    • Marcado como Resposta Carlos Milhomem segunda-feira, 1 de abril de 2013 12:18
    domingo, 31 de março de 2013 22:41
    Moderador
  • Obrigado Felipe pela ajuda.
    terça-feira, 2 de abril de 2013 22:56
  • So agora conseguir rodar a macro Sub EnviarEmailCDO()

    Enviou o e-mail direitinho, so esta faltando anexar a pasta de trabalho.

    A pasta de trabalho se chama; Registro Diário, e esta no desktop, como faço para encaixar no código para anexar?

    .AddAttachment "c:\temp\abc.txt"

    quinta-feira, 25 de abril de 2013 14:31
  • Cole no início do código:

        Dim objWS As Object
        Dim strCaminho As String
        Set objWS = CreateObject("WScript.Shell")
        strCaminho = objWS.SpecialFolders("Desktop") & "\Registro Diário.xlsx"
    

    E substitua a linha em questão pela abaixo:

    .AddAttachment strCaminho


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quinta-feira, 25 de abril de 2013 22:24
    Moderador
  • A MACRO ESTA ENVIANDO SEM ERRO, TAMBEM O ANEXO, CONSEGUIR ACHAR UM ERRO NA LINHA DO CAMINHO O ARQUIVO É XLSM E NÃO XLSX, MAS É PRESCISO QUE A MACRO FIQUE EM OUTRA PLANILHA PARA ANEXAR E ENVIAR.

    COMO FAÇO PARA QUE A MACRO FIQUE NA MESMA PLANILHA E EXECUTE COM ANEXO?

    Sub EnviarEmailCDO()
        'On Error Resume Next
        Dim objWS As Object
        Dim strCaminho As String
        Set objWS = CreateObject("WScript.Shell")
        strCaminho = objWS.SpecialFolders("Desktop") & "\Registro Diário.xlsm"

        Dim oMensagem As Object
        Dim oConfiguração As Object
        Dim sCorpo As String
        Dim vFields As Variant
       
        Set oMensagem = CreateObject("CDO.Message")
        Set oConfiguração = CreateObject("CDO.Configuration")

            oConfiguração.Load -1 'Padrões CDO
            Set vFields = oConfiguração.Fields
            With vFields
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
               
     'Se quiser enviar um e-mail pelo Windows Live:
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.live.com"

    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
               
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "meu email_no_hotmail.com"
    .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "MINHASENHA"
                .Update
            End With

        sCorpo = "OLA TUDO BEM!" & vbNewLine & _
          vbNewLine & _
          "Esta é a linha 1." & vbNewLine & _
          "Esta é a linha 2." & vbNewLine & _
          "Esta é a linha 3." & vbNewLine & _
          "Esta é a linha 4." & vbNewLine
         
        With oMensagem
            Set .Configuration = oConfiguração
            .To = "meu email_no_hotmail.com" 'mude aqui para alterar o destinatário
            .CC = "" 'com cópia
            .BCC = "" 'com cópia oculta
            .From = """miguelinho70"" <meu email_no_hotmail.com>"
            .Subject = "TESTE DE ENVIO E-MAIL"
            .TextBody = sCorpo
            .AddAttachment strCaminho 
            .Send
        End With
    End Sub


    • Editado miguelinho70 domingo, 28 de abril de 2013 02:38 corrigindo propriedade do documento
    sábado, 27 de abril de 2013 21:33
  • 'Obrigado Felipe pela ajuda.
    'Eu conseguir Resolver a questão.
    Private Sub Workbook_BeforeClose(Cancel As Boolean) 'macro na pasta de trabalho acionada quando fechar planilha.
        Call minimizar
        Call SalvarPlanilha  'salva plan desktop com outro nome, somente p o envio depois do envio sera excluida
    End Sub
    Sub minimizar() 'módulo
        Application.WindowState = xlMinimized 'minimiza a planilha enquanto salva e enviar o e-mail.
    End Sub
    Sub SalvarPlanilha() ' módulo
        ActiveWorkbook.SaveCopyAs Filename:= _
        "C:\Users\m\Desktop\Documento_Provisório.xlsm" 'O m é do computador
        'Esta linha tem que ficar em branco para não da erro. se houver outro documento com mesmo nome exclui o antigo.
        Call EnviarEmailCDO 'chama a macro de enviar e-mail. E no final desta macro Sub EnviarEmailCDO, Call exclui  arquivo temporario a planilha enviada. fecha.
       End Sub
    Sub EnviarEmailCDO() 'módulo
        'Aqui a macro de enviar o e-mail
        'no final do envio de e-mail
        Call Excluir_aquivo_provisorio
    End Sub
    Sub Excluir_aquivo_provisorio() 'módulo
        'Aqui macro para ecluir,
        '"C:\Users\m\Desktop\Documento_Provisório.xlsm"
    End Sub

    • Sugerido como Resposta miguelinho70 terça-feira, 30 de abril de 2013 20:47
    terça-feira, 30 de abril de 2013 20:46