E-Mail an eine Excel-Arbeitsmappe senden - Excel-Tipps

Inhaltsverzeichnis

Vielen Dank an Katherine, die die Frage für den Excel-Tipp dieser Woche gesendet hat:

Ich möchte eine Formularschaltfläche in einem Excel-Arbeitsblatt platzieren, die beim Klicken dasselbe Excel-Arbeitsblatt per E-Mail an jemanden sendet.

Um das gesamte Buch mit einer bestimmten Betreffzeile an [email protected] zu senden, verwenden Sie dieses Excel-Makro.

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

Es gibt ein Symbolleistensymbol, mit dem Sie eine Befehlsschaltfläche hinzufügen können. Führen Sie die folgenden Schritte aus, um es einer vorhandenen Symbolleiste hinzuzufügen:

  • Ansicht> Symbolleisten> Anpassen
  • Klicken Sie auf die Registerkarte Befehle
  • Scrollen Sie im Feld Kategorie nach unten zu Control Toolbox
  • Scrollen Sie im Befehlsfeld nach unten zur Befehlsschaltfläche
  • Klicken Sie auf die Befehlsschaltfläche, ziehen Sie sie nach oben und legen Sie sie in einer vorhandenen Symbolleiste ab
  • Schließen Sie das Dialogfeld "Anpassen", indem Sie auf "Schließen" klicken

Jetzt haben Sie das Befehlsschaltflächensymbol: Klicken Sie auf das Symbol. Ziehen Sie in Ihr Arbeitsblatt, um die Schaltfläche zu erstellen. Mach es so groß oder so klein wie du willst. Excel fordert Sie auf, der Schaltfläche ein Makro zuzuweisen. Wählen Sie SendIt. Klicken und ziehen Sie, um das Wort Schaltfläche 1 auf der Schaltfläche hervorzuheben. Geben Sie etwas wie "Diese Datei per E-Mail senden" ein. Klicken Sie außerhalb der Schaltfläche, und Sie können loslegen. Wenn Sie das dieser Schaltfläche zugeordnete Makro jemals neu zuweisen müssen, klicken Sie mit der rechten Maustaste auf die Schaltfläche und wählen Sie Makro zuweisen.

Was ist, wenn Sie eine große Liste von Informationen haben, die Sie an mehrere Benutzer verteilen möchten, aber nur möchten, dass jeder Benutzer seine eigenen Informationen sieht? Unten finden Sie ein etwas komplexeres Makro, das dies ausführt. Rechts sehen Sie eine Musterliste der Verkäufe für drei Regionen.

Richten Sie die Arbeitsmappe vor dem Schreiben des Makros wie folgt ein:

  • Kopieren Sie das Datenarbeitsblatt, indem Sie mit der rechten Maustaste auf die Registerkarte Daten klicken, "Verschieben oder Kopieren" auswählen und "Kopie erstellen" aktivieren. Benennen Sie dieses neue Arbeitsblatt in "Bericht" um. Sie können ein Blatt umbenennen, indem Sie mit der rechten Maustaste auf die Registerkarte klicken, "Umbenennen" auswählen und dann "Bericht" eingeben.
  • Löschen Sie auf der Registerkarte Bericht alle Datenzeilen. Behalten Sie nur die Überschriften und Titel.
  • Fügen Sie ein neues Arbeitsblatt mit den folgenden Spalten ein: Region, Empfänger. Geben Sie in dieses Arbeitsblatt jeden Regionsnamen und den Benutzer ein, der den Bericht erhalten soll. Benennen Sie dieses Arbeitsblatt in "Distribution" um.

Hier ist das Makro. Zeilen, die mit Apostrophen (') beginnen, sind Kommentare, die Ihnen helfen sollen, dem Fluss zu folgen.

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

Interessante Beiträge...