Enviar uma pasta de trabalho do Excel por e-mail - Dicas do Excel

Índice

Obrigado a Katherine que enviou a pergunta para a dica do Excel desta semana:

Desejo colocar um botão de formulário em uma planilha do Excel que, quando clicado, enviará a mesma planilha do Excel para alguém.

Para enviar o livro inteiro para [email protected] com uma linha de assunto específica, você usaria esta macro do Excel.

Sub SendIt() Application.Dialogs(xlDialogSendMail).Show arg1:="[email protected]", _ arg2:="This goes in the subject line" End Sub

Existe um ícone da barra de ferramentas que permite adicionar um botão de comando. Siga estas etapas para adicioná-lo a uma barra de ferramentas existente:

  • Exibir> Barras de ferramentas> Personalizar
  • Clique na guia de comandos
  • Na caixa Categoria, role para baixo até a Caixa de ferramentas de controle
  • Na caixa de comandos, role para baixo até Botão de Comando
  • Clique no botão de comando e arraste-o para cima e solte-o em uma barra de ferramentas existente
  • Ignore a caixa de diálogo Personalizar clicando em Fechar

Agora que você tem o ícone do botão de comando: Clique no ícone. Arraste em sua planilha para criar o botão. Torne-o tão grande ou tão pequeno quanto você quiser. O Excel solicitará que você atribua uma macro ao botão. Escolha SendIt. Clique e arraste para destacar a palavra Botão 1 no botão. Digite algo como "Enviar este arquivo por e-mail". Clique fora do botão e você está pronto para começar. Se você precisar reatribuir a macro anexada a esse botão, clique com o botão direito no botão e escolha atribuir macro.

E se você tiver uma grande lista de informações que deseja distribuir para vários usuários, mas deseja apenas que cada usuário veja suas próprias informações? Abaixo está uma macro um pouco mais complexa que fará isso. À direita, há uma lista de exemplos de vendas para três regiões.

Antes de escrever a macro, configure a pasta de trabalho da seguinte maneira:

  • Copie a planilha de dados clicando com o botão direito do mouse na guia de dados, selecione "mover ou copiar", marque "criar uma cópia", OK. Renomeie esta nova planilha como "Relatório". Você pode renomear uma planilha clicando com o botão direito na guia, escolhendo "renomear" e digitando Relatório.
  • Na guia do relatório, exclua todas as linhas de dados. Mantenha apenas os cabeçalhos e títulos.
  • Insira uma nova planilha com estas colunas: Região, Destinatário. Nesta planilha, digite o nome de cada região e o usuário que deve receber o relatório. Renomeie esta planilha como "Distribuição".

Aqui está a macro. As linhas que começam com apóstrofos (') são comentários projetados para ajudá-lo a seguir o fluxo.

Public Sub SendItAll() ' Clear out any old data on Report Sheets("Report").Select Range("A1").CurrentRegion.ClearContents ' Sort data by region Sheets("Data").Select Range("A1").CurrentRegion.Select Selection.Sort Key1:=Range("A2"), Header:=xlYes ' Process each record on Distribution Sheets("Distribution").Select FinalRow = Range("A15000").End(xlUp).Row For i = 2 To FinalRow Sheets("Distribution").Select RegionToGet = Range("A" & i).Value Recipient = Range("B" & i).Value ' Clear out any old data on Report Sheets("Report").Select Range("A1").CurrentRegion.ClearContents ' Get records from Data Sheets("Data").Select Range("A1").CurrentRegion.Select ' Turn on AutoFilter, if it is not on If ActiveSheet.AutoFilterMode = False Then Selection.AutoFilter ' Filter the data to just this region Selection.AutoFilter Field:=1, Criteria1:=RegionToGet ' Select only the visible cells and copy to Report Selection.SpecialCells(xlCellTypeVisible).Select Selection.Copy Destination:=Sheets("Report").Range("A1") ' Turn off the Autofilter Selection.AutoFilter ' Copy the Report sheet to a new book and e-mail Sheets("Report").Copy Application.Dialogs(xlDialogSendMail).Show _ arg1:=Recipient, _ arg2:="Report for " & RegionToGet ActiveWorkbook.Close SaveChanges:=False Next i End Sub

Artigos interessantes...