Podemos usar o código desta página para trabalhar com o Outlook, Outlook Express, Windows Mail e Windows Live Mail.
É importante lembrar que ao usar o método SendMail não será possível:1) Enviar texto no corpo do e-mail2) Usar o campo CC ou BCC3) Anexar outros arquivos
Se quiser ter as opções acima e estiver usando o Outlook, poderá usar outro exemplo de modelo de objeto do Outlook.
A sub-rotina a seguir envia uma planilha com as pastas na Matriz:
.Sheets(Array("Plan1", "Plan3")).Copy
Use isto se você quiser enviar as planilhas selecionadas:
TheActiveWindow.SelectedSheets.Copy
É salvando a planilha antes de enviá-la com um carimbo de data / hora.
Depois que o arquivo for enviado para a pasta de trabalho será excluído do seu disco rígido.
Altere o endereço de e-mail e o assunto na macro antes de executá-la.
Nota: se você usar o Windows Live Mail o endereço deverá constar nos seus contatos.
Sub MailSheetsArray()' Funciona nas versões 97-2010Dim FileExtStr As StringDim FileFormatNum As LongDim Sourcewb As WorkbookDim Destwb As WorkbookDim TempFilePath As StringDim TempFileName As StringDim sh As WorksheetDim TheActiveWindow As WindowDim TempWindow As WindowDim I As LongWith ApplicationLet .ScreenUpdating = FalseLet .EnableEvents = FalseEnd WithSet Sourcewb = ActiveWorkbook' Copia a planilha para um novo workbook.' Adicionamos uma janela temporária para evitar o problema de cópia.' Se houver uma lista ou tabela numa das sheets e as sheets se agrupem caso exista uma lista ou tabela em uma das folhas.With SourcewbSet TheActiveWindow = ActiveWindowSet TempWindow = .NewWindow.Sheets(Array("Sheet1", "Sheet3")).CopyEnd With' Fecha a janela temporáriaTempWindow.CloseSet Destwb = ActiveWorkbook'Determina a versão do MS Excel e o tipo de extensão.With DestwbIf Val(Application.Version) < 12 Then'Excel 97-2003Let FileExtStr = ".xls": FileFormatNum = -4143Else'Se for a versão 2007-2010 do Excel, Saímos da sub quando sua resposta for'NO no diálogo de segurança que você só vê quando copia'a planilha de um arquivo xlsm com macro estiver desativada.If Sourcewb.Name = .Name ThenWith ApplicationLet .ScreenUpdating = TrueLet .EnableEvents = TrueEnd WithMsgBox "Sua resposta é NO na janela de segurança."Exit SubElseSelect Case Sourcewb.FileFormatCase 51: FileExtStr = ".xlsx": FileFormatNum = 51Case 52:If .HasVBProject ThenFileExtStr = ".xlsm": FileFormatNum = 52ElseFileExtStr = ".xlsx": FileFormatNum = 51End IfCase 56: FileExtStr = ".xls": FileFormatNum = 56Case Else: FileExtStr = ".xlsb": FileFormatNum = 50End SelectEnd IfEnd IfEnd With' Salva a nova planilha/Envia o e-Mail/Deleta oLet TempFilePath = Environ$("temp") & "\"Let TempFileName = "Part of " & Sourcewb.Name & " " & Format(Now, "dd-mmm-yy h-mm-ss")With Destwb.SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNumOn Error Resume NextFor I = 1 To 3.SendMail "bernardess@gmail.com", "Aqui está a linha de Assunto (Subject)"If Err.Number = 0 Then Exit ForNext IOn Error GoTo 0.Close SaveChanges:=FalseEnd With'Deleta o arquivo que foi enviadoKill TempFilePath & TempFileName & FileExtStrWith ApplicationLet .ScreenUpdating = TrueLet .EnableEvents = TrueEnd WithEnd Sub
Tags: VBA, Excel, e-mail, e-mail, send, sendmail,Outlook, Outlook Express, Windows Mail, Windows Live Mail