none
Macro para enviar uma "aba - worksheet" por e-mail em pc's sem outlook RRS feed

  • Pergunta

  • Olá,

    Preciso criar uma macro que faça o seguinte:

    Se a célula D23 da planilha "FORMULARIO" estiver preenchida como "Tratativa Coordenador" a aba "Trat. Coordenador" (apenas essa aba) seja enviada por e-mail onde o e-mail será digitado manualmente, o corpo do e-mail já traga algo como "Prezado(a) Coordenador(a), favor atualizar o excel anexo e devolvê-lo para esse mesmo e-mail" e o envio seja acionado manualmente. Detalhe, precisa ser uma macro para computadores que não possuem outlook, ou seja, o "enviar via excel" precisaria abrir o webmail da pessoa logada que estará manipulando o formulário.

    Obrigado,

    Ricardo Soler


    sexta-feira, 14 de fevereiro de 2014 00:05

Respostas

  • Você tem as informações de SMTP do provedor de email?

    Existem quatro etapas:

    A primeira você irá definir o "gatilho" para começar a função, ou seja quando

    Sheets("FORMULARIO").Cells("D23") = "Tratativa Coordenador"

    Segunda você vai gerar uma nova pasta de trabalho com a planilha que você quer.

    Sub cria_anexo()
    '
    ' No FILENAME:="C:\1.xls" você define um nome e um caminho para o arquivo que será criado temporariamente
    '
    
    
        Sheets("Trat. Coordenador").Select
        Cells.Select
        Selection.Copy
        Workbooks.Add
        ActiveSheet.Paste
        Application.CutCopyMode = False
        ActiveWorkbook.SaveAs Filename:="C:\1.xls", FileFormat:=xlExcel8, _
            Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
            CreateBackup:=False
        ActiveWindow.Close
    End Sub
    

    A terceira você tem que enviar um form pedindo a pessoa para inserir o email do destinatário:

    Primeiro crie o form e coloque uma textbox (use também uma label para que a pessoa entenda o que vem a ser aquele form) lembre de colocar um comamndbutton para enviar os dados.

    coloque este código no click do commandbutton

    Private Sub CommandButton1_Click()
    
    emailcliente = TextBox1
    
    Unload Me
    
    End Sub

    E por fim um novo módulo com o comando para enviar o email:

    Public emailcliente As String 'esta variavel tem que ser definida como pública
    
    
    Function envia_email()
    
    Dim iMsg, iConf, Flds
    
         
        'Seta as variáveis, lembrando que o objeto Microsoft 'CDO deverá estar habilitado em
        'Ferramentas->Referências->Microsoft CDO for Windows '2000 Library
        
        Set iMsg = CreateObject("CDO.Message")
        Set iConf = CreateObject("CDO.Configuration")
        Set Flds = iConf.Fields
    
        'Configura o componente de envio de email
        schema = "http://schemas.microsoft.com/cdo/configuration/"
        Flds.Item(schema & "sendusing") = 2
        'Configura o smtp
        Flds.Item(schema & "smtpserver") = "SEU SMTP" 'ex.: smtp.gmail.com
        'Configura a porta de envio de email
        Flds.Item(schema & "smtpserverport") = 465
        Flds.Item(schema & "smtpauthenticate") = 1
        'Configura o email do remetente
        Flds.Item(schema & "sendusername") = "SEU EMAIL" 'digite o seu email
        'Configura a senha do email remetente
        Flds.Item(schema & "sendpassword") = "SUA SENHA" 'sua senha
        Flds.Item(schema & "smtpusessl") = 1
        Flds.Update
    
        
    
    
        With iMsg
            'Email do destinatário
            .To = emailcliente
            'Seu email
            .From = "SE EMAIL"
            'Título do email
            .Subject = "DIGITE ALGUM ASSUNTO"
            'Mensagem do e-mail, você pode enviar formatado 'em HTML
            .HTMLBody = "Obrigado pela preferência... Anexo <p> <b>Seu recibo de compras</b> "
                         
            'Seu nome ou apelido
            .Sender = "UM APELIDO"
            'Nome da sua organização
            .Organization = "NOME DA EMPRESA"
            'email de responder para
            .ReplyTo = "SEU EMAIL"
            'Anexo a ser enviado na mensagem
            .AddAttachment "c:\1.xls" ' AQUI VOCE ESCOLHE O 'CAMINHO QUE COLOCOU NA HORA DE GERAR A PLANILHA.
            'Passa a configuração para o objeto CDO
            Set .Configuration = iConf
            'Envia o email
            SendEmailGmail = .Send
        End With
    
        'Limpa as variáveis
        Set iMsg = Nothing
        Set iConf = Nothing
        Set Flds = Nothing
        
        
        MsgBox ("Email enviado com sucesso!")
        
          
        
    End Function
    

    Agora crie um botão na planilha FORMULARIO e coloque a seguinte MACRO

    Sub botao_click() 'nome do objeto que vc colocar como botão
    
    If Sheets("FORMULARIO").Cells("D23") = "Tratativa Coordenador" Then
    
    Call cria_anexo
    
    Form1.show ' o FORM1 será o nome que você dará ao seu formulário que pede o email
    
    Call envia_email
    
    End if
    
    
    End Sub

    É grande e complexo, mas é só fazer passo a passo e postar as dúvidas aqui.

    sexta-feira, 14 de fevereiro de 2014 15:43