Note: The other languages of the website are Google-translated. Back to English

Como enviar / enviar e-mail intervalo de células através do Outlook do Excel?

Você já sofreu com um problema que depois de terminar um relatório em uma planilha, e precisa enviar para um intervalo de células desta planilha que contém alguns dados importantes para o seu destinatário específico. Existe alguma maneira rápida de enviar esse intervalo por e-mail a partir do Excel sem abrir o Outlook?

Enviar intervalo de células como anexo do Excel com código VBA

Enviar intervalo de células como corpo do Excel com código VBA


seta azul bolha direitaEnviar intervalo de células como anexo do Excel com código VBA

O código VBA a seguir pode ajudá-lo a enviar o intervalo selecionado como anexo no Excel. Faça o seguinte:

1. Abra sua pasta de trabalho e mantenha pressionado o ALT + F11 chaves para abrir o Janela Microsoft Visual Basic for Applications.

2. Clique inserção > Móduloe cole o seguinte código no Janela Módulo.

Código VBA: enviar intervalo de células como anexo do Excel

Sub SendRange()
'Update 20131209
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
    If Wb2.HasVBProject Then
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Else
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Case Excel8:
    xFile = ".xls"
    xFormat = Excel8
Case xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
    .To = "skyyang@extendoffice.com"
    .CC = ""
    .BCC = ""
    .Subject = "information of kte"
    .Body = "hello, please check and read this document. "
    .Attachments.Add Wb2.FullName
    .Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Nota: No código acima, você pode alterar as seguintes informações conforme sua necessidade.

  • .To = "skyyang @extendoffice.com "
  • .CC = ""
  • .BCC = ""
  • .Subject = "informações de kte"
  • .Body = "olá, por favor, verifique e leia este documento."

3. Então clique F5 para executar esse código, e uma caixa de prompt aparecerá para lembrá-lo de selecionar um intervalo que deseja enviar. Veja a imagem:

Doc-envia-range1

4. Então clique OK, e uma caixa de prompt aparecerá, após o término da barra de progresso, clique Permitir, e o intervalo específico de células foi enviado ao destinatário como um anexo.

Doc-envia-range2


seta azul bolha direitaEnviar intervalo de células como corpo do Excel com código VBA

Se você deseja enviar um intervalo específico como parte do corpo da mensagem do Excel, também pode aplicar o seguinte código VBA para resolvê-lo.

Kutools for Excel, com mais de 120 funções úteis, tornam seus trabalhos mais fáceis. 

1. Ative sua planilha e mantenha pressionado o ALT + F11 chaves para abrir o Janela Microsoft Visual Basic for Applications.

2. Clique inserção > Móduloe cole o seguinte código no Janela Módulo.

Código VBA: enviar intervalo de células como corpo do Excel

Sub EmailRange()
'Update 20131209
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
WorkRng.Select
ActiveWorkbook.EnvelopeVisible = True
With ActiveSheet.MailEnvelope
    .Introduction = "Please read this email."
    .Item.To = "skyyang@extendoffice.com"
    .Item.Subject = "information of kte"
    .Item.Send
End With
Application.ScreenUpdating = True
End Sub

NOTA No código acima, você pode alterar as seguintes informações de acordo com sua necessidade.

  • .Introduction = "Por favor, leia este e-mail."
  • .Item.To = "skyyang @extendoffice.com "
  • .Item.Subject = "informações de kte"

3. Então clique F5 para executar esse código, e uma caixa de prompt aparecerá para lembrá-lo de selecionar um intervalo que deseja enviar.

Doc-envia-range1

4. Então clique OK, e uma caixa de prompt aparecerá, após o término da barra de progresso, clique Permitire, em seguida, o intervalo específico de células foi enviado ao destinatário como corpo da mensagem.

Doc-envia-range2

notas:

1. Esses códigos só estão disponíveis quando o Outlook é seu programa de e-mail.

2. Após enviar a planilha atual, você pode ir para o Outlook para verificar se o e-mail foi enviado com sucesso.


Artigos relacionados:

Como enviar planilha somente pelo Outlook do Excel?

Como enviar pasta de trabalho atual através do Outlook do Excel?


As melhores ferramentas de produtividade para escritório

O Kutools for Excel resolve a maioria dos seus problemas e aumenta sua produtividade em 80%

  • armadilha para peixes: Insira rapidamente fórmulas complexas, gráficos e qualquer coisa que você tenha usado antes; Criptografar células com senha; Criar lista de discussão e enviar emails ...
  • Barra Super Fórmula (edite facilmente várias linhas de texto e fórmula); Layout de leitura (ler e editar facilmente um grande número de células); Colar na faixa filtrada...
  • Mesclar células / linhas / colunas sem perder dados; Dividir o conteúdo das células; Combinar linhas / colunas duplicadas... Evite células duplicadas; Comparar intervalos...
  • Selecione Duplicado ou Único Linhas; Selecione linhas em branco (todas as células estão vazias); Super Find e Fuzzy Find em muitos livros; Seleção aleatória ...
  • Cópia exata Várias células sem alterar a referência da fórmula; Criação automática de referências para várias folhas; Inserir marcadores, Caixas de seleção e mais ...
  • Extrair Texto, Adicionar texto, remover por posição, Remover Espaço; Criar e imprimir subtotais de paginação; Converter entre conteúdo de células e comentários...
  • Super Filtro (salvar e aplicar esquemas de filtro a outras planilhas); Classificação Avançada por mês / semana / dia, frequência e mais; Filtro Especial por negrito, itálico ...
  • Combine pastas de trabalho e planilhas; Mesclar tabelas com base em colunas-chave; Divida os dados em várias folhas; Conversão em lote de xls, xlsx e PDF...
  • Mais de 300 recursos poderosos. Suporta Office / Excel 2007-2021 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Recursos completos de avaliação gratuita de 30 dias. Garantia de devolução do dinheiro em 60 dias.
guia kte 201905

Guia do Office traz interface com guias para o Office e torna seu trabalho muito mais fácil

  • Habilite a edição e leitura com guias em Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novas guias da mesma janela, em vez de em novas janelas.
  • Aumenta sua produtividade em 50% e reduz centenas de cliques do mouse para você todos os dias!
parte inferior da aba do escritório
Comentários (26)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
Oi, estou usando o marco que seleciona as células necessárias para enviar e-mail. eu combinei isso com outra macro para que eu abra um "novo e-mail" meu problema agora é que, se você colocar muitas informações em uma célula, será necessário apenas o iformaton para que você não visualize todas as informações nessa célula. ?? muito obrigado por sua ajuda com isso aplausos
Este comentário foi feito pelo moderador no site
Olá a todos
Eu tenho um projeto para selecionar intervalo na folha 1 para ser enviado por email um por um para muitos endereços de email escritos na folha 2 na coluna A e se a coluna B estiver vazia com um determinado assunto e depois de enviar ele escreve na folha 2 coluna b enviado
E esperar 10 segundos para enviar o próximo email conforme a condição do servidor
Alguem me ajuda por favor?   
Este comentário foi feito pelo moderador no site
Oi, você pode me informar como adicionar assinatura e segunda linha de introdução a este e-mail para o segundo programa. Desde já, obrigado.
Este comentário foi feito pelo moderador no site
bom e útil, bom trabalho!!!
Este comentário foi feito pelo moderador no site
Muito útil. Obrigada . Eu tenho uma lista de endereços de e-mail na mesma folha. Quando eu cliquei em um endereço de e-mail, o intervalo de células selecionado será enviado como anexo a este e-mail. Por favor, pode me ajudar com isso? Muito obrigado.
Este comentário foi feito pelo moderador no site
Olá, muito bem explicado. Em vez de enviar uma nova pasta de trabalho, podemos apenas copiar e colar o intervalo selecionado no corpo do email e enviar. Não quero enviar o intervalo selecionado como imagem. Eu quero enviar como uma visualização de tabela no corpo do e-mail. Podemos fazer isso??
Este comentário foi feito pelo moderador no site
Obrigado, isso é muito útil, mas e se eu precisar adicionar alguma descrição no corpo do email antes de enviá-lo. Por favor, sugira o código.
Este comentário foi feito pelo moderador no site
Oi,
Tudo parece bom, mas não dando o intervalo selecionado de borda, você poderia sugerir.
Este comentário foi feito pelo moderador no site
Muito obrigado, estou encontrando esta solução há tanto tempo.
Este comentário foi feito pelo moderador no site
Excelente trabalho. Seria melhor ver isso enviado automaticamente. O que devo fazer para que não ocorra um erro antes de retomar o envio?
Este comentário foi feito pelo moderador no site
poderíamos colocar tantos endereços de e-mail para enviar?
Este comentário foi feito pelo moderador no site
Oi, Carey, todos os VBAs acima podem adicionar muitos endereços de e-mail (Para, BCC, CC) para enviar usando ; como separador. Por exemplo, .To = "skyyang@extendoffice.com; teste1@extendoffice.com; teste2@extendoffice.com "
Este comentário foi feito pelo moderador no site
ich möchte das kopierte nicht als Datei in eine E-Mail einfügen, sondern por copy and paste in die E-Mail einfügen. Qual é o código VBA deles?
Este comentário foi feito pelo moderador no site
Oi eu tenho uma tabela configurada que eu quero que a equipe preencha e depois um botão de comando que irá gerar automaticamente um email, porém eu quero que os dados da tabela estejam no corpo do email. Existe um código para isso? 
Obrigado 
Este comentário foi feito pelo moderador no site
Olá a todos
Eu tenho um projeto para selecionar intervalo na folha 1 para ser enviado por email um por um para muitos endereços de email escritos na folha 2 na coluna A e se a coluna B estiver vazia com um determinado assunto e depois de enviar ele escreve na folha 2 coluna b enviado
E esperar 10 segundos para enviar o próximo email conforme a condição do servidor
Alguem me ajuda por favor?   
Este comentário foi feito pelo moderador no site
Olá a todos
Eu tenho um projeto para selecionar intervalo na folha 1 para ser enviado por email um por um para muitos endereços de email escritos na folha 2 na coluna A e se a coluna B estiver vazia com um determinado assunto e depois de enviar ele escreve na folha 2 coluna b enviado
E esperar 10 segundos para enviar o próximo email conforme a condição do servidor
Alguem me ajuda por favor?   
Este comentário foi feito pelo moderador no site
Oi, hriad, "se a coluna B estiver vazia com determinado assunto e depois de enviar ele escreve na folha 2 coluna b enviada
E esperar 10 segundos para enviar o próximo e-mail conforme a condição do servidor" Não entendo isso. Por favor, conte-me novamente sobre sua necessidade.
Este comentário foi feito pelo moderador no site
Ola ensolarado
antes de tudo, obrigado pela ajuda, como o servidor colocou a condição de não enviar muitos e-mails no mesmo segundo, quero aguardar 10 segundos após enviar o primeiro e-mail e o seguinte.
Este comentário foi feito pelo moderador no site
Oi, hriad, por favor, tente o código abaixo, depois de executá-lo, ele abrirá uma caixa de diálogo para selecionar um intervalo que você deseja enviar, então ele enviará para endereços na folha 2 coluna A e com os assuntos na coluna B. A cada 10 segundos , envie para um endereço. Você pode alterar o código "Por favor, leia este e-mail" conforme necessário.
Sub SendEmailRange()

'Atualizar porExtendoffice20220414

Dim WorkRng As Range

Dim xSU, EV Como booleano

Dim xWSh como planilha

Dim xCount como inteiro

Dim xI como inteiro

On Error Resume Next

xTitleId = "KutoolsforExcel"

'seleciona um intervalo que costumava enviar como corpo

Set WorkRng = Application.InputBox("Range", xTitleId, Application.Selection.Address, , , , , 8)

Se WorkRng não for nada, saia do sub
WorkRng.Activate
WorkRng.Select

Set xWSh = ActiveWorkbook.Worksheets("Sheet2") 'a planilha que contém endereços e assuntos

xCount = xWSh.UsedRange.Rows.Count

xSU = Application.ScreenUpdating

EV = ActiveWorkbook.EnvelopeVisible

Application.ScreenUpdating = False


Para xI = 1 Para xCount

Se (xWSh.Range("A" & xI) = "") Então
Sair para
Se acabar
ActiveWorkbook.EnvelopeVisible = Verdadeiro
Com ActiveSheet.MailEnvelope
.Introduction = "Por favor, leia este e-mail."

.Item.To = xWSh.Range("A" & xI)

.Item.Assunto = xWSh.Range("B" & xI)

.Item.Enviar
Terminar com
Se (xI = xCont) Então

Sair para

Se acabar

Application.Wait Now + TimeValue("0:00:10")

Seguinte


Application.ScreenUpdating = xSU

ActiveWorkbook.EnvelopeVisible = EV

End Sub

Este comentário foi feito pelo moderador no site
Ola ensolarado
Muito, muito obrigado pelo seu esforço... Muito obrigado
Este comentário foi feito pelo moderador no site
Podemos fixar intervalos? em macro ele mesmo
Este comentário foi feito pelo moderador no site
Olá,

Mam plik z 6 arkuszami. Każdy z arkuszy 2-6 musi zostać wysłany do innej grupy odbiorców jako załącznik excela. Czy da się para podpiąć pod 5 przycisków?
Este comentário foi feito pelo moderador no site
Olá, Paper
Para resolver seu problema, o artigo abaixo pode ajudá-lo, verifique-o:

https://www.extendoffice.com/documents/excel/7178-send-each-sheet-to-different-email.html

Obrigado!
Este comentário foi feito pelo moderador no site
Obrigado por isso! Vou testá-lo assim que voltar das férias. Tem mais uma pergunta. Tem um problema com a execução de códigos vba usando o botão Activex (nenhuma ação), mesmo que o código funcione perfeitamente no modo de edição ou quando executado por ctrl + botão selecionado do teclado. Estou apenas começando a jornada vba e não tenho
ideia do que estou fazendo de errado :/
Este comentário foi feito pelo moderador no site
Olá, Paper
Você só precisa copiar e colar o código no Microsoft Visual Basic para Aplicações janela e, em seguida, clique no botão Opere botão da barra de ferramentas como abaixo da captura de tela mostrada: (Nota: no código, S1 é a célula que contém o endereço de e-mail para o qual você deseja enviar o e-mail. Por favor, altere-os para sua necessidade.)

https://www.extendoffice.com/images/stories/comments/comment-skyyang/doc-send-emails.png

Por favor, tente novamente!
Este comentário foi feito pelo moderador no site
Oi,

Eu fiz tudo como acima e o resultado é: tudo funciona perfeitamente à parte do botão :) Realmente não me importo com isso no momento :)

Muitíssimo obrigado!!! tópico encerrado :)
Não há comentários postados aqui ainda
Deixe o seu comentário
Postando como convidado
×
Avalie esta postagem:
0   Personagens
Locais sugeridos

Siga-nos

Copyright © 2009 - www.extendoffice.com. | Todos os direitos reservados. Distribuído por ExtendOffice. | | | Mapa do site
Microsoft e o logotipo do Office são marcas comerciais ou marcas registradas da Microsoft Corporation nos Estados Unidos e / ou em outros países.
Protegido por Sectigo SSL