Inviare tramite posta elettronica una cartella di lavoro Excel - Suggerimenti per Excel

Sommario

Grazie a Katherine che ha inviato la domanda per il suggerimento di Excel di questa settimana:

Voglio inserire un pulsante modulo su un foglio di lavoro Excel che, se cliccato, invierà via email lo stesso foglio di lavoro Excel a qualcuno.

Per inviare l'intero libro a [email protected] con un oggetto particolare, dovresti utilizzare questa macro di Excel.

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

C'è un'icona della barra degli strumenti che ti consente di aggiungere un pulsante di comando. Segui questi passaggi per aggiungerlo a una barra degli strumenti esistente:

  • Visualizza> Barre degli strumenti> Personalizza
  • Fare clic sulla scheda dei comandi
  • Nella casella Categoria scorrere verso il basso fino a Strumenti di controllo
  • Nella casella dei comandi, scorri verso il basso fino al pulsante di comando
  • Fare clic sul pulsante di comando e trascinarlo verso l'alto e rilasciarlo su una barra degli strumenti esistente
  • Chiudi la finestra di dialogo Personalizza premendo Chiudi

Ora che hai l'icona del pulsante di comando: fai clic sull'icona. Trascina nel foglio di lavoro per creare il pulsante. Rendilo grande o piccolo come vuoi. Excel ti chiederà di assegnare una macro al pulsante. Scegli SendIt. Fare clic e trascinare per evidenziare la parola Pulsante 1 sul pulsante. Digita qualcosa come "Invia questo file per posta elettronica". Fai clic all'esterno del pulsante e sei pronto per iniziare. Se hai bisogno di riassegnare la macro allegata a quel pulsante, fai clic con il pulsante destro del mouse e seleziona Assegna macro.

Cosa succede se si dispone di un ampio elenco di informazioni che si desidera distribuire a un numero di utenti, ma si desidera che ogni utente veda solo le proprie informazioni? Di seguito è una macro leggermente più complessa che lo farà. A destra è riportato un elenco di esempio delle vendite per tre regioni.

Prima di scrivere la macro, configurare la cartella di lavoro come segue:

  • Copia il foglio di lavoro dei dati facendo clic con il pulsante destro del mouse sulla scheda dati, seleziona "sposta o copia", seleziona "crea una copia", OK. Rinomina questo nuovo foglio di lavoro "Report". È possibile rinominare un foglio facendo clic con il pulsante destro del mouse sulla scheda, selezionando "rinomina", quindi digitando Report.
  • Nella scheda del rapporto, elimina tutte le righe di dati. Conserva solo le intestazioni e i titoli.
  • Inserisci un nuovo foglio di lavoro con queste colonne: Regione, Destinatario. In questo foglio di lavoro, digita il nome di ciascuna regione e l'utente che dovrebbe ricevere il rapporto. Rinomina questo foglio di lavoro "Distribuzione".

Ecco la macro. Le righe che iniziano con apostrofi (') sono commenti progettati per aiutarti a seguire il flusso.

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

Articoli interessanti...