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

Come inviare / inviare per e-mail un intervallo di celle tramite Outlook da Excel?

Hai mai sofferto di un problema dopo aver terminato un rapporto in un foglio di lavoro e devi inviare a un intervallo di celle in questo foglio di lavoro che contengono alcuni dati importanti per il tuo destinatario specifico. Esistono modi rapidi per inviare tramite posta elettronica questo intervallo da Excel senza aprire Outlook?

Invia intervallo di celle come allegato da Excel con codice VBA

Invia intervallo di celle come corpo da Excel con codice VBA


freccia blu freccia destraInvia intervallo di celle come allegato da Excel con codice VBA

Il seguente codice VBA può aiutarti a inviare l'intervallo selezionato come allegato in Excel. Per favore, fai come segue:

1. Apri la cartella di lavoro e quindi tieni premuto il pulsante ALT + F11 chiavi per aprire il Finestra di Microsoft Visual Basic, Applications Edition.

2. Clic inserire > Moduloe incolla il codice seguente nel file Finestra del modulo.

Codice VBA: invia intervallo di celle come allegato da 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

Note:: Nel codice sopra, puoi modificare le seguenti informazioni in base alle tue esigenze.

  • .To = "skyyang @extendoffice.com "
  • .CC = ""
  • .BCC = ""
  • .Subject = "informazioni su kte"
  • .Body = "ciao, controlla e leggi questo documento."

3. Quindi fare clic F5 chiave per eseguire questo codice e verrà visualizzata una finestra di messaggio per ricordarti di selezionare un intervallo che desideri inviare. Vedi screenshot:

doc-send-range1

4. Quindi fare clic OKe verrà visualizzata una finestra di messaggio, al termine della barra di avanzamento, fare clic su Consentiree quindi l'intervallo specifico di celle è stato inviato al destinatario come allegato.

doc-send-range2


freccia blu freccia destraInvia intervallo di celle come corpo da Excel con codice VBA

Se desideri inviare un intervallo specifico come parte del corpo del messaggio da Excel, puoi anche applicare il seguente codice VBA per risolverlo.

Kutools for Excel, con oltre 120 funzioni utili, semplifica il tuo lavoro. 

1. Attiva il foglio di lavoro e tieni premuto il tasto ALT + F11 chiavi per aprire il Finestra di Microsoft Visual Basic, Applications Edition.

2. Clic inserire > Moduloe incolla il codice seguente nel file Finestra del modulo.

Codice VBA: invia intervallo di celle come corpo da 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: Nel codice sopra, puoi modificare le seguenti informazioni in base alle tue necessità.

  • .Introduction = "Leggi questa email."
  • .Item.To = "skyyang @extendoffice.com "
  • .Item.Subject = "informazioni su kte"

3. Quindi fare clic F5 tasto per eseguire questo codice e verrà visualizzata una finestra di messaggio per ricordarti di selezionare un intervallo che desideri inviare.

doc-send-range1

4. Quindi fare clic su OKe verrà visualizzata una finestra di messaggio, al termine della barra di avanzamento, fare clic su Consentiree quindi l'intervallo specifico di celle è stato inviato al destinatario come corpo del messaggio.

doc-send-range2

Note:

1. Questi codici sono disponibili solo quando si utilizza Outlook come programma di posta.

2. Dopo aver inviato il foglio di lavoro corrente, puoi andare su Outlook per assicurarti che l'e-mail sia stata inviata correttamente.


Articoli correlati:

Come inviare un foglio di lavoro solo tramite Outlook da Excel?

Come inviare la cartella di lavoro corrente tramite Outlook da Excel?


I migliori strumenti per la produttività in ufficio

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office/Excel 2007-2021 e 365. Supporta tutte le lingue. Facile implementazione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce ogni giorno centinaia di clic del mouse!
fondo officetab
Commenti (26)
Ancora nessuna valutazione. Puoi essere il primo a votare!
Questo commento è stato fatto dal moderatore sul sito
Ciao, sto usando il marco che seleziona le celle richieste per e-mail. l'ho combinato con un'altra macro in modo da farmi aprire una "nuova e-mail" il mio problema ora è che se metti molte informazioni in una cella, prende solo l'iformaiton, non visualizzi tutte le informazioni in quella cella tutte le idee ?? grazie mille per il tuo aiuto con questo evviva
Questo commento è stato fatto dal moderatore sul sito
Ciao a tutti
Ho un progetto per selezionare l'intervallo nel foglio 1 da inviare via e-mail uno per uno a molti indirizzi e-mail scritti nel foglio 2 nella colonna A e se la colonna B è vuota con un determinato oggetto e dopo l'invio scrive nel foglio 2 colonna b inviata
E aspettare 10 secondi per inviare la prossima email come condizione del server
Qualcuno mi aiuta per favore?   
Questo commento è stato fatto dal moderatore sul sito
Ciao, puoi per favore farmi sapere come aggiungere la firma e la seconda riga di introduzione a questa mail per il secondo programma. Grazie in anticipo.
Questo commento è stato fatto dal moderatore sul sito
bello e utile, buon lavoro!!!
Questo commento è stato fatto dal moderatore sul sito
Molto utile. Grazie . Ho un elenco di indirizzi e-mail sullo stesso foglio. Quando ho fatto clic su un indirizzo e-mail, l'intervallo di celle selezionato verrà inviato come allegato a questa e-mail. Per favore, puoi aiutarmi su questo? Molte grazie.
Questo commento è stato fatto dal moderatore sul sito
Ciao, molto ben spiegato. Invece di inviare una nuova cartella di lavoro, possiamo solo copiare e incollare l'intervallo selezionato nel corpo dell'e-mail e inviarlo. Non voglio inviare l'intervallo selezionato come immagine. Voglio inviare come una vista tabella nel corpo dell'e-mail. Possiamo farlo??
Questo commento è stato fatto dal moderatore sul sito
Grazie, questo è molto utile, ma cosa succede se ho bisogno di aggiungere una descrizione nel corpo della posta prima di inviarla. Si prega di suggerire il codice.
Questo commento è stato fatto dal moderatore sul sito
Ciao,
Tutto sembra a posto, ma non fornisce l'intervallo selezionato per il confine, potresti suggerire.
Questo commento è stato fatto dal moderatore sul sito
Grazie mille, sto trovando questa soluzione da così tanto tempo.
Questo commento è stato fatto dal moderatore sul sito
Lavoro eccellente. Sarebbe meglio vedere questo inviato automaticamente. Cosa devo fare in modo che non venga visualizzato un errore prima di riprendere a inviare?
Questo commento è stato fatto dal moderatore sul sito
potremmo mettere tutti gli indirizzi email a cui inviare?
Questo commento è stato fatto dal moderatore sul sito
Ciao, Carey, tutti sopra i VBA possono aggiungere molti indirizzi e-mail (A, BCC, CC) a cui inviare utilizzando ; come separatore. Ad esempio, .To = "skyyang@extendoffice.com; prova1@extendoffice.com; prova2@extendoffice.com "
Questo commento è stato fatto dal moderatore sul sito
ich möchte das kopierte nicht als Datei in eine E-Mail einfügen, sondern per copy and paste in die E-Mail einfügen. Vuoi vedere il codice VBA?
Questo commento è stato fatto dal moderatore sul sito
Ciao, ho una tabella impostata che voglio che il personale compili e quindi un pulsante di comando che genererà automaticamente un'e-mail, tuttavia voglio che i dati della tabella siano nel corpo dell'e-mail. C'è un codice per quello? 
Grazie 
Questo commento è stato fatto dal moderatore sul sito
Ciao a tutti
Ho un progetto per selezionare l'intervallo nel foglio 1 da inviare via e-mail uno per uno a molti indirizzi e-mail scritti nel foglio 2 nella colonna A e se la colonna B è vuota con un determinato oggetto e dopo l'invio scrive nel foglio 2 colonna b inviata
E aspettare 10 secondi per inviare la prossima email come condizione del server
Qualcuno mi aiuta per favore?   
Questo commento è stato fatto dal moderatore sul sito
Ciao a tutti
Ho un progetto per selezionare l'intervallo nel foglio 1 da inviare via e-mail uno per uno a molti indirizzi e-mail scritti nel foglio 2 nella colonna A e se la colonna B è vuota con un determinato oggetto e dopo l'invio scrive nel foglio 2 colonna b inviata
E aspettare 10 secondi per inviare la prossima email come condizione del server
Qualcuno mi aiuta per favore?   
Questo commento è stato fatto dal moderatore sul sito
Ciao, hriad, " se la colonna B è vuota con un certo soggetto e dopo l'invio scrive nel foglio 2 colonna b inviata
E aspettare 10 secondi per inviare la prossima e-mail come condizione del server "Non capisco questo. Per favore, raccontami di nuovo la tua esigenza.
Questo commento è stato fatto dal moderatore sul sito
Ciao Sunny
prima di tutto, grazie per il tuo aiuto, poiché il server ha posto una condizione per non inviare molte e-mail nello stesso secondo, voglio aspettare 10 secondi dopo aver inviato la prima e-mail e quella successiva.
Questo commento è stato fatto dal moderatore sul sito
Ciao, hriad, prova sotto il codice, dopo averlo eseguito, apparirà una finestra di dialogo per selezionare un intervallo che desideri inviare, quindi invia agli indirizzi nel foglio 2 colonna A e con gli argomenti nella colonna B. Ogni 10 secondi , inviare a un indirizzo. Puoi modificare il codice "Per favore leggi questa email" di cui hai bisogno.
Sub SendEmailRange()

'Aggiorna entroExtendoffice20220414

Dim WorkRng come intervallo

Dim xSU, EV come booleano

Dim xWSh come foglio di lavoro

Dim xCount As Integer

Dim xI come intero

On Error Resume Next

xTitleId = "KtoolsforExcel"

'seleziona un intervallo che inviava come corpo

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

Se WorkRng non è nulla, allora esci da Sub
WorkRng.Attiva
WorkRng.Select

Set xWSh = ActiveWorkbook.Worksheets("Sheet2") 'il foglio che contiene indirizzi e argomenti

xCount = xWSh.UsedRange.Rows.Count

xSU = Applicazione.Aggiornamento schermo

EV = ActiveWorkbook.EnvelopeVisible

Application.ScreenUpdating = False


Per xI = 1 Per xCount

Se (xWSh.Range("A" & xI) = "") Allora
Esci per
End If
ActiveWorkbook.EnvelopeVisible = Vero
Con ActiveSheet.MailEnvelope
.Introduction = "Leggi questa email."

.Articolo.A = xWSh.Range("A" & xI)

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

.Articolo.Invia
Fine Con
Se (xI = xCount) Allora

Esci per

End If

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

Successiva


Application.ScreenUpdating = xSU

ActiveWorkbook.EnvelopeVisible = EV

End Sub

Questo commento è stato fatto dal moderatore sul sito
Ciao Sunny
Molte molte Grazie per il vostro sforzo... Grazie mille
Questo commento è stato fatto dal moderatore sul sito
Possiamo fissare intervalli? in macro se stesso
Questo commento è stato fatto dal moderatore sul sito
Ciao,

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ę a podpiąć pod 5 przycisków?
Questo commento è stato fatto dal moderatore sul sito
Ciao, pawer
Per risolvere il tuo problema, l'articolo seguente potrebbe aiutarti, controllalo:

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

.
Questo commento è stato fatto dal moderatore sul sito
Grazie per questo! Appena torno dalle ferie lo proverò. Hai un'altra domanda. Hai un problema con l'esecuzione di codici vba utilizzando il pulsante Activex (nessuna azione) anche se il codice funziona perfettamente in modalità di modifica o quando viene eseguito da ctrl + pulsante selezionato dalla tastiera. Sto appena iniziando il viaggio in vba e non ho
idea di cosa sbaglio :/
Questo commento è stato fatto dal moderatore sul sito
Ciao, pawer
Devi solo copiare e incollare il codice nel file Microsoft Visual Basic, Applications Edition finestra, quindi fare clic su Correre pulsante dalla barra degli strumenti come mostrato nell'immagine sottostante: (Note:: nel codice, S1 è la cella che contiene l'indirizzo email a cui vuoi inviare l'email. Per favore cambiali secondo le tue necessità.)

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

Per favore riprova!
Questo commento è stato fatto dal moderatore sul sito
Ciao,

Ho fatto tutto come sopra e il risultato è: tutto funziona perfettamente a parte il pulsante :) Al momento non mi interessa davvero :)

Grazie infinite!!! argomento chiuso :)
Non ci sono ancora commenti pubblicati qui
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite

Seguici

Copyright © 2009 - www.extendoffice.com. | Tutti i diritti riservati. Offerto da ExtendOffice, | Mappa del sito
Microsoft e il logo Office sono marchi o marchi registrati di Microsoft Corporation negli Stati Uniti e / o in altri paesi.
Protetto da Sectigo SSL