Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mehrere Sheets von einer Mappe per E-Mail senden

Forumthread: Mehrere Sheets von einer Mappe per E-Mail senden

Mehrere Sheets von einer Mappe per E-Mail senden
17.11.2018 12:08:08
einer
Hallo an alle,
Habe ein “kleines” Problem :-) …brauche ein “bisschen“ Hilfe.
Habe den unteren Code bei einer Arbeitsmappe eingebaut, es sendend die ganze Arbeitsmappe per E-Mail an den vorgegebenen Empfänger.
Möchte aber dass es nur 3 Arbeitsblätter (Sheet 1: Jahreskasse – Sheet 2: Monatskasse – Sheet 3: Tageskasse) von der ganzen Mappe versendet.
Die Blätter haben Makros und Formeln, also sollen die Werte und das Format eins zu eins in die versendete blätter bzw. mail mappe eingefügt werden, ohne Makros und Format…ist es möglich?
Sub Excel_Workbook_via_Outlook_Senden()
Dim Nachricht As Object, OutApp As Object
Dim GruppenName, KasseMonat As String
Set OutApp = CreateObject("Outlook.Application")
Dim AWS As String
AWS = ThisWorkbook.FullName
GruppenName = ThisWorkbook.Sheets("Menu").Range("B127")
KasseMonat = Month(CDate(ThisWorkbook.Sheets("Menu").Range("A123"))) & "/" & Year(CDate( _
ThisWorkbook.Sheets("Menu").Range("A123")))
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = "kassenabrechnung@kasseleer.de"
.Subject = "Abrechnung - Team: " & TeamName & " - Monat: " & KasseMonat & " - " & Date  _
& Time
.Attachments.Add AWS
.Body = "Bitte Drücken Sie auf Senden und die Kasse wird automatisch gesendet." &  _
vbCrLf & "Vielen Dank."
.Display
End With
Set OutApp = Nothing
Set Nachricht = Nothing
MsgBox "NICHT VERGESSEN!!!" & vbNewLine & "Drucken Sie  alle nötigen Dokumente falls benötigt.", _
vbInformation, "LEER - KASSE"
End Sub

Danke im Voraus,
Niko
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Sheets von einer Mappe per E-Mail senden
17.11.2018 18:00:46
einer
Habe heute durchs ganze Forum herumgestöbert ohne Erfolg :-(
Habe es auch mit
AWS = ThisWorkbook.Sheet (“Jahreskasse“,“Monatskasse“,“Tageskasse“)
statt
AWS = ThisWorkbook.FullName
ohne erfolg :-( ...Laufzeitfehler'438':
Wenn es funktionieren würde... wären damit auch Makros und Formeln einfügen damit unterbunden?
Sehne mich nach einem kleinen Lichtstrahl in meine VBA Tunnel…jede Hilfe ist willkommen :-)
Niko
Anzeige
AW: Mehrere Sheets von einer Mappe per E-Mail senden
17.11.2018 19:27:04
einer
Hallo Niko,
Du siehst es richtig! Zitat: ...Lichtstrahl in meine VBA Tunnel?
Genau da steckst du, im Tunnel. Mach die Augen auf. Wie würdest du es machen, ohne VBA?
1. Mappe sichern als .xlsx. Damit geht der VBA-Code den Bach runter.
2. In der neuen Mappe alle Blätter löschen, die nicht gebraucht werden.
3. In allen übriggebliebenen Blätter die benutzten Zellen selektieren, kopieren und Inhalte einfügen. Damit werden die Formeln in Werte umgewandelt.
4. Diese Mappe per Mail verschicken.
So: Wenn du diese Schritte durchführst mit eingeschaltetem Makro-Rekorder, hast du ein Framework, in dem du die Vorgaben für deinen Code hast. Ein paar kleine Anpassungen, wie z.B. Warnungen ausschalten ( Application.DisplayAlerts = True) und den Code als Vorlauf zu deinem existierenden Code einfügen.
Ich weiss nicht wie Anfrage auf die Idee kommen, mit (nichtssagenden) Codeschnipseln, aber ohne Beispielmappe, auf die Idee kommen, dass Ihnen fix-fertige VBA Lösungen präsentiert werden.
Gruess, schönes Wochenende und Glück auf
Hansueli
Anzeige
AW: Mehrere Sheets von einer Mappe per E-Mail senden
17.11.2018 20:41:42
einer
Hi Hansueli,
vielen Dank für deine Bemerkungen, Belehrungen und Einweisung in das Anfänger abc des Excels....sehr hilfreich.
In mein ersten Beitrag habe ich ein Code geschrieben für "Arbeitsmappe per Email versenden" was auch in meiner Arbeitsmappe habe, denke das dies der benannte (nichtssagenden) Codeschnipseln ist.
In mein zweiten Beitrag wollte ich Infos dazu geben was ich bis dato versucht habe.
Da sich einige mit den nichtssagenden Codeschnipseln irritiert füllen und ich Ihre VBA ehre beleidigt haben könnte, möchte ich auch eine Datei hinzufügen mit dem was ich meine “zu sagen wollen“…..ist für alle VBA Blinde… wie ich.
https://www.herber.de/bbs/user/125458.xlsm
Mein VBA Wissen habe ich von Anfang an erwähnt “ich weiß das ich nichts weiߓ
Auf ehrlich Deutsch…ich Verstehe, ich akzeptiere das was du gepostet hast….aber ich finde es beScheiden.
Wenn einer einen Blutanfänger wie mich Helfen möchten, ist er Willkommen…
Danke,
Niko
Anzeige
AW: Mehrere Sheets von einer Mappe per E-Mail senden
18.11.2018 16:42:59
einer
Habe es selber bei suchen im Internet gefunden...trozdem danke das ich hier posten darf.
Falls einer danach sucht kann dies kopieren...von www.rondebruin.nl
Sub Mail_Sheets_Array()
'Working in Excel 2000-2016
'For Tips see: http://www. _
rondebruin.nl/win/winmail/Outlook/tips.htm
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim Sourcewb As Workbook
Dim Destwb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim OutApp As Object
Dim OutMail As Object
Dim sh As Worksheet
Dim TheActiveWindow As Window
Dim TempWindow As Window
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set Sourcewb = ActiveWorkbook
'Copy the sheets to a new workbook
'We add a temporary Window to avoid the Copy problem
'if there is a List or Table in one of the sheets and
'if the sheets are grouped
With Sourcewb
Set TheActiveWindow = ActiveWindow
Set TempWindow = .NewWindow
.Sheets(Array("Sheet1", "Sheet3")).Copy
End With
'Close temporary Window
TempWindow.Close
Set Destwb = ActiveWorkbook
'Determine the Excel version and file extension/format
With Destwb
If Val(Application.Version) 

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Mehrere Sheets von einer Mappe per E-Mail senden


Schritt-für-Schritt-Anleitung

Um mehrere Sheets aus einer Excel-Arbeitsmappe per E-Mail zu senden, kannst du den folgenden VBA-Code verwenden. Dieser Code sendet nur die benötigten Blätter, ohne Makros oder Formeln einzufügen:

Sub Mail_Sheets_Array()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim Sourcewb As Workbook
    Dim Destwb As Workbook

    ' Arbeitsmappe setzen
    Set Sourcewb = ThisWorkbook
    ' Temporäre Arbeitsmappe erstellen
    Sourcewb.Sheets(Array("Jahreskasse", "Monatskasse", "Tageskasse")).Copy
    Set Destwb = ActiveWorkbook

    ' E-Mail senden
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = "deine.email@example.com"
        .Subject = "Mehrere Sheets"
        .Body = "Hier sind die angeforderten Sheets."
        .Attachments.Add Destwb.FullName
        .Display ' Zum Testen anzeigen, zum Senden .Send verwenden
    End With

    ' Temporäre Arbeitsmappe schließen
    Destwb.Close False
    ' Outlook-Objekte freigeben
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

Häufige Fehler und Lösungen

  • Laufzeitfehler '438': Dieser Fehler tritt auf, wenn du versuchst, auf ein nicht vorhandenes Objekt zuzugreifen. Stelle sicher, dass die Blattnamen korrekt sind. Verwende die genaue Schreibweise: "Jahreskasse", "Monatskasse" und "Tageskasse".

  • E-Mail wird nicht gesendet: Überprüfe, ob Outlook korrekt installiert und konfiguriert ist. Der Code verwendet die Outlook-Objektbibliothek, um E-Mails zu senden.


Alternative Methoden

Wenn du kein VBA verwenden möchtest, gibt es auch manuelle Methoden:

  1. Mappe als .xlsx speichern: Speichere die Arbeitsmappe im .xlsx-Format, um VBA-Codes zu deaktivieren.
  2. Blätter kopieren: Erstelle eine neue Arbeitsmappe, kopiere die benötigten Blätter und füge die Werte ohne Formeln ein.
  3. E-Mail senden: Sende die neue Arbeitsmappe per E-Mail.

Diese Methode ist besonders nützlich, wenn du den VBA-Code nicht beherrscht.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die oben genannten Schritte in der Praxis umsetzt:

  1. Erstelle eine neue Excel-Datei und benenne die Blätter entsprechend.
  2. Füge den VBA-Code in ein neues Modul ein (Alt + F11, dann Einfügen > Modul).
  3. Ändere die E-Mail-Adresse im Code auf deine eigene.
  4. Führe das Makro aus, um die Sheets per E-Mail zu versenden.

Tipps für Profis

  • Verwende Kommentare im Code: Dies hilft dir, den Code leichter zu verstehen und zu bearbeiten.
  • Teste den Code gründlich: Bevor du das Makro in einer produktiven Umgebung verwendest, führe umfangreiche Tests durch.
  • Überlege, den Code zu optimieren: Du kannst weitere Funktionen hinzufügen, wie das Anhängen von zusätzlichen Dateien oder das automatische Ausfüllen des Betreffs.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Sheets gleichzeitig versenden?
Du kannst die Sheets(Array("Sheet1", "Sheet2", "Sheet3"))-Methode verwenden, um mehrere Blätter in einer neuen Arbeitsmappe zu kopieren und dann zu senden.

2. Geht das auch ohne Outlook?
Ja, du kannst die Blätter auch lokal speichern und dann manuell per E-Mail senden, wenn du kein Outlook nutzen möchtest.

3. Was passiert mit Makros und Formeln in den Blättern?
Im oben angegebenen Code werden nur die Werte und das Format der Blätter kopiert, wodurch Makros und Formeln nicht in die neue Arbeitsmappe eingefügt werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige