Skicka en Excel-arbetsbok via e-post - Excel-tips

Innehållsförteckning

Tack till Katherine som skickade frågan till veckans Excel-tips:

Jag vill placera en formulärknapp på ett Excel-kalkylblad som, när man klickar på det, kommer att skicka samma Excel-kalkylblad till någon.

För att skicka hela boken till [email protected] med en viss ämnesrad använder du detta Excel-makro.

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

Det finns en verktygsfältikon som låter dig lägga till en kommandoknapp. Följ dessa steg för att lägga till det i ett befintligt verktygsfält:

  • Visa> Verktygsfält> Anpassa
  • Klicka på fliken kommandon
  • I rutan Kategori, rulla ner till Kontrollverktygslåda
  • Bläddra ner till kommandoknappen i kommandorutan
  • Klicka på kommandoknappen och dra upp den och släpp den i ett befintligt verktygsfält
  • Stäng dialogrutan Anpassa genom att trycka på Stäng

Nu när du har kommandoknappsikonen: Klicka på ikonen. Dra i kalkylbladet för att skapa knappen. Gör den så stor eller så liten som du vill. Excel ber dig att tilldela ett makro till knappen. Välj SendIt. Klicka och dra för att markera ordet Knapp 1 på knappen. Skriv något som "E-posta den här filen". Klicka utanför knappen så är du redo att gå. Om du någonsin behöver omfördela makrot som är kopplat till den knappen högerklickar du på knappen och väljer tilldela makro.

Vad händer om du har en stor lista med information som du vill distribuera till ett antal användare, men du bara vill att varje användare ska se sin egen information? Nedan finns ett lite mer komplext makro som kommer att göra detta. Till höger finns en lista över försäljningar för tre regioner.

Innan du skriver makrot ska du ställa in arbetsboken enligt följande:

  • Kopiera datakalkylbladet genom att högerklicka på datafliken, välj "flytta eller kopiera", markera "skapa en kopia", OK. Byt namn på det här nya kalkylbladet "Rapport". Du kan byta namn på ett ark genom att högerklicka på fliken, välja "byta namn" och sedan skriva Rapporter.
  • Ta bort alla datarader på rapportfliken. Behåll bara rubriker och titlar.
  • Infoga ett nytt kalkylblad med dessa kolumner: Region, Mottagare. I det här kalkylbladet skriver du varje regionnamn och användaren som ska få rapporten. Byt namn på detta kalkylblad till "distribution".

Här är makrot. Linjer som börjar med apostrofer (') är kommentarer som är utformade för att hjälpa dig att följa flödet.

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

Intressanta artiklar...