Excel planilha vba eniva email dados anexo

Sex, 02 de Setembro de 2011 08:12 Expedito Marcondes
Imprimir
Saberexcel - o site de quem precisa aprender macros microsoft Excel VBA

Esse macro do Aplicativo Microsoft Excel VBA(Visual Basic Application) envia um email com anexo de determinada planilha(desejada),
para vários emails contendo no corpo da folha planilha o range especificado para envio.
Baixe o exemplo de planiha no final da página. fiquem com Deus, Expedito Marcondes

Sub sbx_envia_anexo_email_planilha_desejada()
Dim vNovoArquivo                  As Workbook
Dim vPlanAtiva                      As Worksheet
Dim vNovaPlanilha                 As Integer
Dim sbEnviarPlanilha              As String
Dim txArquivoExiste               As String
Dim sbExcluirArqTemporario    As String
Dim vDestino, vTitulo             As String
Dim vLinCol, i                       As Long
Dim txArquivoNumero            As Long
'- - - - - - - - - - - - - - - - - - -
''salva o arquivo como (Excel 2010)
'txArquivoExiste = ".xlsb": txArquivoNumero = 50
'txArquivoExiste = ".xlsx": txArquivoNumero = 51
'txArquivoExiste = ".xlsm": txArquivoNumero = 52
'- - - - - - - - - - - - - - - - - - -
    'vamos utilizar o formato (51) (xlsx)
    txArquivoExiste = ".xlsx": txArquivoNumero = 51
       
    'Instrução exibe o número de planilhas automaticamente inseridas em novas pastas de trabalho
    vNovaPlanilha = Application.SheetsInNewWorkbook
           
    'aqui definimos somente a planiha na ordem para nosso arquivo desejado
     Application.SheetsInNewWorkbook = 1
 
     With Sheets("Meus_Contatos")
          vLinCol = .Cells(Rows.Count, 1).End(xlUp).Row
           
          For i = 2 To vLinCol
              vDestino = .Cells(i, 1).Value
              vTitulo = .Cells(i, 2).Value
      
             'vamos definir a planilha que se tonará ativa
             Set vPlanAtiva = Sheets("Pagamento_Janeiro_2014")
             On Error Resume Next
            
             'Sheets(CStr(vPlanAtiva)).Select
             'usamos a instrução set para variavel para expandir para mais tres colunas
             'vamos copiar somente os dados filtrados como (setamos) acima
              Plan2.Range("A1:H8").Copy
           
             'Aqui vamos definir a folha de planiha do livro que enviaremos anexo em nosso email,
             'observem que poderá ser qualquer folha de planilha
             sbEnviarPlanilha = "Pagamento_Janeiro_2014"
             Plan2.Select
             'vamos adicionar ou criar um novo arquivos(wkb) no aplicativo excel
             Set vNovoArquivo = Application.Workbooks.Add
           
             'vamos fazer uma cola especial e colar somente os valores em nossa planilha ativa que será formatada.
             With ActiveSheet
                  .Range("A1").Value = "Agora - ( " & Date & " Dia de pagamento contas....)"
                  .Range("A4").PasteSpecial Paste:=xlPasteValues
                  .Range("A4").PasteSpecial Paste:=xlPasteFormats
                  .Range("A:I").Columns.AutoFit
             End With
                      
             Application.CutCopyMode = False
             'vamos definir o nome da folha de planilha para a folha de planilha copiada
               
             With ActiveSheet
                  .Name = sbEnviarPlanilha
                  .Range("A1").Select
             End With
  
            'essa linha de código enibe a mensagem do aplicativo excel
            Application.DisplayAlerts = False
           
            'vamos salvar nosso arquivo com o nome da folha de planilha que foi copiada no formato 2010 - xlsx (51)
            vNovoArquivo.SaveAs Filename:=ThisWorkbook.Path & "\" & "" & sbEnviarPlanilha & txArquivoExiste, FileFormat:=txArquivoNumero
            sbExcluirArqTemporario = vNovoArquivo.FullName
           
            'vamos enviar nosso arquivo para o email desejado
            vNovoArquivo.SendMail vDestino, vTitulo
           
            'Fechando o arquivo novo, observe que usei aqui Close e não Quit(Fecha todo Aplicativo)
            vNovoArquivo.Close
           
            'Instrução Kill deletará nosso arquivo temporariamente criado para o envio do email.
            Kill sbExcluirArqTemporario
           
            Next i
        End With
       
        'Instrução exibe o número de planilhas automaticamente inseridas em novas pastas de trabalho
        Application.SheetsInNewWorkbook = vNovaPlanilha
End Sub
' - - - - - - - - -
'deseja entrar em contato equipe saberexcel
'esse macro abre a página de contato do site SaberExcel.
Sub contato_equipe_saberexcel()
Dim Resposta As String
Resposta = MsgBox("deseja entrar em contato equipe saberexcel atraves do site?", vbYesNo + vbQuestion, "Saberexcel - site das macros")
If Resposta = vbYes Then
   Application.DisplayAlerts = False
   ThisWorkbook.FollowHyperlink "http://www.microsoftexcel.com.br/index.php/contato-duvidas-excel.html", , True
End If
End Sub



Aprenda tudo sobre planilhas do Aplicativo Microsoft Excel VBA(Visual Basic Application), sozinho, com baixo custo, praticando com os produtos didáticos Escola Saberexcel VBA Estudos® - Treinamentos com Macros, Fórmulas e Funções.

   Baixe o exemplo de planilha contendo o macro acima:
Excel planilha vba envia plan anexo (33 KB)

Tags:
Última atualização em Ter, 21 de Fevereiro de 2012 17:22