Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
852to856
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Email Versand Thema 13784

Email Versand Thema 13784
12.03.2007 06:55:00
Ralf
Hallo Forum,
Ich weiß, dieses Thema wurde schon mehrfach hier besprochen, ich habe aber im Archiv keine brauchbare Lösung für mein Problem gefunden.
Ich möchte aus einem Tabellenblatt heraus per Makro verschiedene Zellen in ein anderes Blatt kopieren und dieses eine Blatt per email (mit Outlook 2000) versenden. Das zu versendende Blatt ist in der Arbeitsmappe ausgeblendet. Das zu versendende Blatt soll als Dateinamen den Inhalt der Zellen A1 und A2 tragen.
Ich habe da mal mein bisheriges Werk mit angehängt.
Folgende Probleme:
1. Die verschickte Datei trägt den Namen Mappe2.xls
2. Die Datei wird nicht verschickt
Wer kann mir das Makro funktionsfähig anpassen?
Danke schon mal für Eure Hilfe.
Gruß
Ralf
Sub tippzettel_eMail()
Dim wsName As String
Dim blatt As Integer
wsName = ActiveSheet.Name
Application.DisplayAlerts = False
Sheets("eMail").Visible = True
Sheets(wsName).Range("D6:F15").Copy
Sheets("eMail").Range("B4").PasteSpecial Paste:=xlValues
Sheets(wsName).Range("K6:M15").Copy
Sheets("eMail").Range("G4").PasteSpecial Paste:=xlValues
Sheets(wsName).Range("D17:F26").Copy
Sheets("eMail").Range("B15").PasteSpecial Paste:=xlValues
Sheets(wsName).Range("K17:M26").Copy
Sheets("eMail").Range("G15").PasteSpecial Paste:=xlValues
Sheets(wsName).Range("D28:F37").Copy
Sheets("eMail").Range("B26").PasteSpecial Paste:=xlValues
Sheets(wsName).Range("A2:F2").Copy
Sheets("eMail").Range("A2").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Sheets("eMail").Select
Range("A2").Select
Sheets(wsName).Select
Range("A1:F1").Select
Sheets("eMail").Copy
Dim Nachricht As Object, OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
Dim AWS As String
AWS = ThisWorkbook.FullName
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = "email 1" & "; " & "email 2" & "; " & "email 3" & "; " & "email 4"
.Subject = "Tippzettel " & ActiveSheet.Range("A2")
.attachments.Add AWS
'Mail.Send
End With
'Outlook schliessen
OutApp.Quit
Set OutApp = Nothing
Set Nachricht = Nothing
End Sub

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Email Versand Thema 13784
12.03.2007 08:18:00
Mathis
Hi Ralf - dies ist zwar keine vollständige Lösung, aber prüfe bitte, ob die Datei davor gespeichert ist. Erst dann gibt "ThisWorkbook.FullName" den benötigten Dateipfad zurück. Davor lediglich "Mappe2". Und damit kann Outlook als attachment nichts anfangen. Zudem: soviel ich weiss können nur komplette Mappen (Excel- Dateien) verschickt werden, und keine einzelnen Tabellenblätter. Die Schritte fürs Automatisieren wären also z.B.:
neue Arbeitsmappe erstellen,
gewünschte Infos in die neue Arbeitsmappe kopieren,
neue Arbeitsmappe irgendwo speichern,
dabei Dateipfad merken,
Datei schliessen,
Mail verschicken.
Gruss,
M.
Anzeige
AW: Email Versand Thema 13784
12.03.2007 08:30:05
Ralf
Hallo M.,
also die Datei wird zuvor nicht gespeichert. Ich kopiere aus einem Tabellenblatt 5 verschiedene Bereiche in ein ausgeblendetes Tabellenblatt. Dieses Blatt wird dann in eine neue Arbeitsmappe kopiert. Dieses Arbeitsmappe wird dann letztlich verschickt. Es wird also die gesamte Arbeitsmappe verschickt. Arbeitsmappe speichern wäre optional, da dann alle die damit arbeiten, das gleiche Verzeichnis unter dem gleichen Pfad anlegen müssten (ist für verschiedene Anwender ein Problem). Kann man die Datei nicht temporär speichern (um den Dateinamen zu bekommen) und dann wieder löschen?
Gruß
Ralf
Anzeige
AW: Email Versand Thema 13784
12.03.2007 12:00:00
mumpel
Hallo!
So sollte es funktionieren. Die Kopie wird im selben Verzeichnis wie die Originaldatei gespeichert. Die Kopien müssen manuell aus dem Ordner entfernt werden.
Sub tippzettel_eMail()
Dim wsName As String
Dim blatt As Integer
wsName = ActiveSheet.Name
Application.DisplayAlerts = False
Sheets("eMail").Visible = True
Sheets(wsName).Range("D6:F15").Copy
Sheets("eMail").Range("B4").PasteSpecial Paste:=xlValues
Sheets(wsName).Range("K6:M15").Copy
Sheets("eMail").Range("G4").PasteSpecial Paste:=xlValues
Sheets(wsName).Range("D17:F26").Copy
Sheets("eMail").Range("B15").PasteSpecial Paste:=xlValues
Sheets(wsName).Range("K17:M26").Copy
Sheets("eMail").Range("G15").PasteSpecial Paste:=xlValues
Sheets(wsName).Range("D28:F37").Copy
Sheets("eMail").Range("B26").PasteSpecial Paste:=xlValues
Sheets(wsName).Range("A2:F2").Copy
Sheets("eMail").Range("A2").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Sheets("eMail").Select
Range("A2").Select
Sheets(wsName).Select
Range("A1:F1").Select
Sheets("eMail").Copy
Dim Nachricht As Object, OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
Dim AWS As String
ActiveWorkbook.SaveAs Range("A1").Value & " " & Range("A2").Value & ".xls"
AWS = ActiveWorkbook.FullName
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = "email 1" & "; " & "email 2" & "; " & "email 3" & "; " & "email 4"
.Subject = "Tippzettel " & ActiveSheet.Range("A2")
.attachments.Add AWS
.Send
End With
'Outlook schliessen
OutApp.Quit
Set OutApp = Nothing
Set Nachricht = Nothing
End Sub

Gruss Rene
Anzeige
AW: Email Versand Thema 13784
12.03.2007 12:07:00
mumpel
Nachtrag: Setze am Ende des Makros noch die Zeile: ActiveWorkbook.Close
Daurch wird die Kopie geschlossen.
Gruss Rene
AW: Email Versand Thema 13784
12.03.2007 14:26:00
Ralf
Hallo Rene,
hat super funktioniert.
Vielen Dank für Deine Hilfe.
Gruß
Ralf
AW: Email Versand Thema 13784
12.03.2007 21:17:31
Ralf
Hallo Forum,
das Makro klappt zwar soweit, aber ich möchte in die Platzhalter für die eMail Adressen Adressen eintragen, die nicht im Outlook Adressbuch vorhanden sind. Wie kann ich die Adressprüfung ausschalten?
Außerdem würde mich interessieren, ob dieses Makro nur für Outlook funktioniert, oder auch für Outlook Express. Wie muss dies dann aussehen. Ich möchte im Vorfeld irgendwelche Kompatibilitätsfehler vermeiden.
Danke für Eure Hilfe.
Gruß
Ralf
Anzeige
AW: Email Versand Thema 13784
13.03.2007 09:33:36
mumpel
Das musst Du nicht abschalten. Du kannst jede beliebige Emailadresse angeben, z.B.:
Sheets("eMail").Copy
Dim Nachricht As Object, OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
Dim AWS As String
ActiveWorkbook.SaveAs Range("A1").Value & " " & Range("A2").Value & ".xls"
AWS = ActiveWorkbook.FullName
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = "email@adresse.de" 'erste Mailadresse
.cc = "email@adresse.de;email3@adresse3.de;email@adresse.de" 'Kopien an
.bcc = "blind@adresse.de" 'Blindkopie an
.Subject = "Tippzettel " & ActiveSheet.Range("A2")
.body = "Sehr geehrte Damen und Herren," & vbcrlf & vbcrlf & _
"anbei gewünschte Information" & vbcrlf & vbcrlf _
"Mit freundlichen Grüßen," & vbcrlf & "Unterschrift" ' Hier kann man den Text vorgeben
.attachments.Add AWS
.Send
End With
'Outlook schliessen
OutApp.Quit
Set OutApp = Nothing
Set Nachricht = Nothing
ActiveWorkbook.Close
Ob das mit OE funktioniert, habe ich noch nicht getestet. Dafür muss man aber den Code geringfügig ändern. Dürfte aber auch im Archiv zu finden sein.
Gruss Rene
Anzeige
AW: Email Versand Thema 13784
13.03.2007 09:42:24
Ralf
Hallo Rene,
von meinem Büro rechner mit Outlook 2003 hat es ja gestern geklappt.
Zu Hause gestern Abend habe ich es dann noch mal mit meinem Outlook 2000 probiert. Da kam eben die Fehlermeldung, dass die Adressprüfung unbekannte Empfänger ermittelt hat. Die Email wurde nicht verschickt.
Ob das jetzt so nach Deinen Angaben funktioniert, kann ich jetzt erst wieder heute Abend testen.
Gibt es eine Möglichkeit, das Makro unabhängig von einem Mail Programm zu schreiben, also allgemein gültig?
Danke für Deine Hilfe.
Gruß
Ralf
AW: Email Versand Thema 13784
13.03.2007 10:25:00
mumpel
Nein, das geht nicht. Jedes Mailporgramm hat andere Spezifikationen. Insbesonder Lotus-Mail macht zuweilen Probleme. Da geht das mit obigen Code überhaupt nicht.
Mit Outlook 2000 kenne ich mich nicht aus. Schau mal in den Optionen nach, ob dort die Adressprüfung irgendwo aktiviert ist.
Gruss Rene
Anzeige
AW: Email Versand Thema 13784
13.03.2007 10:29:26
Ralf
Hi Rene,
das ist es ja eben. In den Optionen habe ich die Adressprüfung schon abgeschaltet. Deshalb habe ich vermutet, dass die Prüfung von dem VBA Code ausgeht.
Ich habe es gerade nochmal mit Deinem überarbeiteten Code von meinem Büro Rechner probiert. Funktioniert. Ich probiere es heute Abend noch mal von zu Hause.
Gruß
Ralf
Nachtrag
13.03.2007 10:32:00
mumpel
Was man machen kann. Die Mail über eine Userform senden. In dieser baut man Optionsbutton ein, über die man das Mailprogramm auswählt. Anhand der Auswahl wird dann automatisch der notwendige Code benutzt, den man zuvor definiert hat.
Gruss Rene
Anzeige
AW: Nachtrag
13.03.2007 10:37:00
Ralf
Hi Rene,
jetzt wird's interessant. ;-)) Und kompliziert!?!
Kannst Du mir da helfen?
Ich vermute mal, mir wird Outlook und Outlook Express reichen. Ist der Code für die verschiedenen Outlook Versionen eigentlich gleich?
Gruß
Ralf
AW: Nachtrag
13.03.2007 10:42:00
mumpel
Nein, so kompliziert ist das nicht. Outlook und OE unterscheiden sich normalerweise nur in der Aufrufprozedur. Dauert aber, bis ich ein Beispiel erstellt habe.
Gruss Rene
AW: Nachtrag
13.03.2007 12:49:00
Ralf
Na ja, wäre schön gewesen so eine Umschaltmöglichkeit zuu haben.
Ich hoffe ich kriege das bei denen, die das Excel File mitbeutzen, irgendwie hin, dass die ggf. auf Outlook umsteigen.
Gruß
Ralf
Anzeige
AW: Nachtrag
13.03.2007 12:06:00
mumpel
Das mit der UF ist nicht möglich, da OE kein VBA unterstützt. Somit bleibt nur Outlook übrig.
Gruss Rene
AW: Nachtrag
13.03.2007 12:47:00
Ralf
Hi Rene,
ich checke das heute Abend mal, ob das von zu Hause funktioniert.
Ist es bei der Adressüberprüfung ein Unterschied, ob die eMail Adressen im To: oder im CC: stehen?
Gruß
Ralf
AW: Nachtrag
13.03.2007 12:54:00
mumpel
Das kann ich nicht sagen, da ich Outlook 2003 habe. Probiers mal aus. Bei "to" nur eine Adresse und bei "cc" alle anderen, getrennt durch Semikolon, z.B.
.to = "mail@adresse.de"
.cc = "mail2@adresse.de;mail3@adresse.de;mail4@adresse.de" ' usw.
Gruss Rene
AW: Nachtrag
14.03.2007 06:38:17
Ralf
Hi Rene,
so habe das gestern abend zu Hause probiert und es hat funktioniert. Keine Adressprüfung mehr. Parallel habe ich dies bei einem Mitstreiter auf dem Rechner probiert. Dies hat ebenfalls funktioniert.
Insofern ist das Thema wohl beendet.
Danke für Deine Hilfe.
Gruß
Ralf
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige