Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Einzelnes Tabellenblatt per Email versenden!

Einzelnes Tabellenblatt per Email versenden!
20.07.2004 09:30:17
DonFiala
Hallo zusammen,
habe mir mit viel Mühe folgendes Makro zusammengeklaut, aufgezeichnet und nachbearbeitet. Das geschützte Tabellenblatt wird in eine Neue Excel Datei unter einem im Ursprungstabellenblatt festgelegten Namen&Datum gespeichert!
Der Blattschutz wird hierfür aufgehoben! Der ertse Teil des Makros funktioniert soweit einwandfrei!
Dann soll dieses neue Tabellenblatt als Outlook Anhang versendet werden (Ideal wäre wenn ich wie mit dem Speichernamen im Excel einen Email Namen festlegen könnte) Leider wird immer die riesige Ursprungsdatei in den Anhang gepackt! Nehme mal an das liegt daran dass das Makro auch in der URsprungsdatei liegt?!
Weiss jmd. Rat? Das kann doch für Leute die net so planlos sind wie ich net so schwer sein?
Vielen Dank
ActiveSheet.Select
ActiveSheet.Copy
Cells.Select
ActiveSheet.Unprotect "Passwort"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
_

Dim DName As String, Dateiname As String, Pfad As String
Pfad = "\\Server\Firmendaten"
DName = Range("R2")

Dateiname = Pfad & "\" & DName & Format(Now, "YYYY.MM.DD") & ".xls"
' Tagesdatum als "Jahr.Monat.Tag" wegen Exploreransicht!


ActiveWorkbook.SaveAs Filename:=Dateiname
ActiveSheet.Select
'

Sub Excel_Workbook_via_Outlook_Senden()
Dim Nachricht As Object, OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
Dim AWS As String
'Aktive Arbeitsmappe wird als Mail gesendet
AWS = ThisWorkbook.FullName
InitializeOutlook = True
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = "irgendwer@provider"
.Subject = "Testmeldung von Excel2000 " & Date & Time
.attachments.Add AWS
.Body = "Das ist ein Test." & vbCrLf & "Bitte ignorieren."
'Hier wird die Mail nochmals angezeigt
.Display
'Hier wird die Mail gleich in den Postausgang gelegt
'Mail.Send
End With
OutApp.Quit
Set OutApp = Nothing
Set Nachricht = Nothing
End Sub

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einzelnes Tabellenblatt per Email versenden!
Ramses
Hallo
Du musst die Zeile
AWS = ThisWorkbook.FullName
gegen
AWS = Den_Speichernamen_deiner_neuen_Tabelle
austauschen
Gruss Rainer
AW: Einzelnes Tabellenblatt per Email versenden!
20.07.2004 10:44:10
DonFiala
Alles Klar,
vielen Dank! Habe
AWS = Pfad & "\" & DName & Format(Now, "YYYY.MM.DD") & ".xls"
kopiert und damit klappts. Dann habe ich noch das QutApp.Quit deaktiviert und
noch
Dim D2Name As String
eingefügt sowie
.To = D2Name STATT .To = "irgendwer@provider"
Damit kann ich jedes Tabellenblatt dem jeweiligen im Tabellenblatt hinterlegten Empfänger zumailen! Vielen Dank! Hätt nie gedacht dass ich das jemals hinbekomme!
Anzeige
Merci :-)
Ramses
Hallo
nachdem der ursprüngliche Code ja von mir ist ;-))
Gruss Rainer
AW: Merci :-)
20.07.2004 12:08:49
DonFiala
Hallo,
nach dieser kompetenten Hilfe darf ich Dich vielleicht noch ein letztes mal nerven!
Hab noch ein paar kleinigkeiten im (sicher von mir immer noch zu sehr aufgeblähten) Makro verändert! So wird vom ersten Teil des Makros die Datei in der (Layout) Form erzeugt in der ich es haben möchte. Dachte zwar ich kann auf den Grossteil des ersten Makros verzichten aber irgendwie klappt das nicht also lasse ich das auch so.
Die Datei wird später auch geschlossen und in den Anhang vom Outlook gepackt!
Nur was mich richtig fertig macht und damit die ganze bisherige Arbeit "fast" zerstört
ist die Tatsache dass in der Datei im Anhang die in den Ursprungsdateien ausgeblendeten Zellen zu sehen sind. Und da das mal 20 hässliche Zellen und mal 80 sind ist das naja, sehr sehr sehr unangenehm! :-(
Da gibts doch sicher nen Befehl mit "False" den ich irgendwo einfügen kann? Ich hoffe inständig dass es da ne Lösung gibt, bin seit Stunden an diesem zu 99% fertigen Makro!!
1000 Mrd. Dank !

Sub email()
ActiveSheet.Select
ActiveSheet.Copy
Cells.Select
ActiveSheet.Unprotect "DonFiala"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveSheet.protect "DonFiala"
Dim DName As String, Dateiname As String, Pfad As String
Pfad = "\\Server\Firmendaten\0_FCC-Kunden\1_Kunden Liebrich\Lorinser\3_Balanced_Scorecard\ZE"
DName = Range("R2")
Dateiname = Pfad & "\" & DName & Format(Now, "YYYY.MM.DD") & ".xls"
' Tagesdatum als "Jahr.Monat.Tag" wegen Exploreransicht!
ActiveSheet.Select
ActiveWindow.Close SaveChanges:=0
' 

Sub Excel_Workbook_via_Outlook_Senden()
Dim Nachricht As Object, OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
Dim AWS As String
Dim D2Name As String
D2Name = Range("R3")
'Aktive Arbeitsmappe wird als Mail gesendet
AWS = Pfad & "\" & DName & Format(Now, "YYYY.MM.DD") & ".xls"
' AWS = ThisWorkbook.FullName
InitializeOutlook = True
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = D2Name
' .To = "D2Name"
.Subject = "Zielerreichungsgespräch " '& Date
.attachments.Add AWS
'.Body = "Das ist ein Test." & vbCrLf & "Bitte ignorieren."
'Hier wird die Mail nochmals angezeigt
.Display
'Hier wird die Mail gleich in den Postausgang gelegt
'Mail.Send
End With
' OutApp.Quit
Set OutApp = Nothing
Set Nachricht = Nothing
End Sub

Anzeige
AW: Merci :-)
20.07.2004 12:44:55
DonFiala
Hmm,
ganz so einfach wie ich dachte is es wohl doch nicht! Is noch irgendwie der Wurm drin!
Die Makros sind "zu unabhängig" voneinander! Ich glaube das logischste Vorgehen wäre
dass der erste Teil des Makros, der das kleine Tabellenblatt aus der Ursprüngsdatei kopiert (und gespiechert) dann (monatlich, kontextbezogen) gefüllt wird und erst dann, nach einem Klick auf den Email Button (Makro) verschickt wird.
Irgendwie hab ich bisher 2 unabhängige Dateien! Der erste Teil der Datei klappt gut!
Aber wenn ich dann das neue Tabellenblatt fülle und auf Email senden gehe, hab ich wieder ein leeres Blatt mit den unnütz eingeblendeten Zellen! Hoffe auf Hilfe und Suche weiter! Vielen Dank
Anzeige
AW: Merci :-) - Final
20.07.2004 14:22:16
DonFiala
Also,
habe jetzt das Makro nur leicht verändert in der Art dass das vorher Speichern auch bei der Email Variante eingebaut wird (Allerdings in einem eigenen Ordner; is besser wegen Überschreibungsprompt). Dadurch hab ich das Problem mit den eingeblendeten Zeilen nicht mehr!
Alle anderen Probleme sind z.T. auch konzeptionell!
So werden die Blätter wohl erher zunächt Kommentarlos per Email versandt, wodurch es nicht wichtig ist den Text aus welchem editierten Blatt auch immer per Makro zu kopieren!
Wenn man editieren will kann man auch das Attachment öffnen!
Alle anderen Veränderungen kann man nach dem automatischen "Speichern unter" befehl vornehmen! Beim beenden wird man ja dann nach Speicher, ja nein gefragt...
Das einzige was man natürlich eben nicht machen kann ist erneut den Button zu benutzen,
da Excel ja sonst versucht die Datei unter einem bereits geöffneten Namen zu speicher...
Vielen dank auf jeden Fall! Ich komme wieder :-)
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Einzelnes Tabellenblatt per Email versenden


Schritt-für-Schritt-Anleitung

Um ein einzelnes Tabellenblatt per Email zu versenden, kannst Du ein Makro in Excel verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und lade die Arbeitsmappe, die das Tabellenblatt enthält, das Du versenden möchtest.

  2. Öffne den VBA-Editor mit ALT + F11.

  3. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“.
    • Wähle „Einfügen“ und dann „Modul“.
  4. Füge den folgenden Code ein:

    Sub Excel_Workbook_via_Outlook_Senden()
       Dim Nachricht As Object, OutApp As Object
       Set OutApp = CreateObject("Outlook.Application")
       Dim AWS As String
       Dim D2Name As String
       D2Name = Range("R3").Value ' Hier die Zelle anpassen, die die E-Mail-Adresse enthält
    
       ' Erstelle den Dateinamen
       AWS = "C:\Pfad\Zu\Deiner\Datei\" & Range("R2").Value & Format(Now, "YYYY.MM.DD") & ".xls"
       ActiveSheet.Copy
       ActiveWorkbook.SaveAs Filename:=AWS
    
       Set Nachricht = OutApp.CreateItem(0)
       With Nachricht
           .To = D2Name
           .Subject = "Betreff der E-Mail" ' Hier anpassen
           .Attachments.Add AWS
           .Display ' Zum Testen, um die E-Mail anzuzeigen
           ' .Send ' Zum direkten Senden
       End With
    
       OutApp.Quit
       Set OutApp = Nothing
       Set Nachricht = Nothing
    End Sub
  5. Passe die Pfade und Zellreferenzen an:

    • Ersetze C:\Pfad\Zu\Deiner\Datei\ mit dem tatsächlichen Speicherort.
    • Überprüfe die Zellreferenzen, um sicherzustellen, dass sie korrekt sind.
  6. Führe das Makro aus, um das einzelne Tabellenblatt per Email zu versenden.


Häufige Fehler und Lösungen

  • Problem: Das falsche Tabellenblatt wird versendet.

    • Lösung: Stelle sicher, dass das richtige Blatt aktiv ist, bevor Du das Makro ausführst.
  • Problem: Die Email wird nicht gesendet.

    • Lösung: Überprüfe, ob Outlook korrekt konfiguriert ist und ob Du die .Display-Zeile deaktiviert hast, wenn Du die Email direkt senden möchtest.
  • Problem: Ausgeblendete Zellen erscheinen im Anhang.

    • Lösung: Verwende den Befehl ActiveSheet.Protect, um das Blatt nach dem Kopieren wieder zu schützen.

Alternative Methoden

Wenn Du kein VBA verwenden möchtest, gibt es auch die Option, das Tabellenblatt als PDF zu speichern und dann manuell zu versenden:

  1. Speichern als PDF:

    • Gehe auf „Datei“ > „Speichern unter“.
    • Wähle „PDF“ als Dateiformat.
    • Speichere nur das aktive Blatt.
  2. Versenden über Email:

    • Öffne Dein Email-Programm und füge die gespeicherte PDF-Datei als Anhang hinzu.

Praktische Beispiele

Hier ist ein einfaches Beispiel für ein Makro, das ein einzelnes Excel Blatt versendet:

Sub SendSingleSheet()
    Dim OutApp As Object
    Dim Nachricht As Object
    Set OutApp = CreateObject("Outlook.Application")
    Set Nachricht = OutApp.CreateItem(0)

    ActiveSheet.Copy
    ActiveWorkbook.SaveAs "C:\Pfad\DeinBlatt.xls"

    With Nachricht
        .To = "empfaenger@example.com"
        .Subject = "Einzelnes Tabellenblatt"
        .Attachments.Add "C:\Pfad\DeinBlatt.xls"
        .Send
    End With

    OutApp.Quit
    Set OutApp = Nothing
    Set Nachricht = Nothing
End Sub

Tipps für Profis

  • Verwende Fehlerbehandlung: Integriere On Error Resume Next und On Error GoTo 0, um Fehler im Makro zu handhaben.
  • Automatisiere die PDF-Erstellung: Du kannst das Makro so erweitern, dass es das Tabellenblatt direkt als PDF speichert und versendet.
  • E-Mail-Adressen dynamisch abrufen: Stelle sicher, dass die E-Mail-Adressen in einer bestimmten Zelle hinterlegt sind, um flexibel zu sein.

FAQ: Häufige Fragen

1. Wie kann ich ein einzelnes Tabellenblatt als PDF versenden?
Du kannst das Tabellenblatt zuerst als PDF speichern und dann die PDF-Datei per Email versenden.

2. Funktioniert das Makro auch in Excel 2016?
Ja, das Makro funktioniert in Excel 2016 und neueren Versionen.

3. Kann ich mehrere Tabellenblätter gleichzeitig versenden?
Ja, Du musst jedoch das Makro anpassen, um mehrere Blätter zu kopieren und zu speichern, bevor Du sie versendest.

4. Wie sende ich ein einzelnes Blatt aus einer Excel Arbeitsmappe?
Indem Du sicherstellst, dass das gewünschte Blatt aktiv ist und das oben angegebene Makro verwendest.

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