Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
900to904
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
900to904
900to904
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Tabellen per EMail versenden - @wuxinese

Tabellen per EMail versenden - @wuxinese
29.08.2007 09:04:51
Fritz_W
Hallo Forumsbesucher,
der ursprüngliche Thread mit meinem Beitrag vom 23.08. wurde inzwischen geschlossen. Deshalb möchte ich an dieser Stelle mein Anliegen noch einmal aufgreifen.
Ich möchte ausgewählte Tabellen einer Exceldatei an mehrere eMail-Anschriften versenden, wobei die Formeln in den betreffenden Tabellen in der zu versendenden Datei in Werte umgewandelt werden müssen. In der Tabelle "Daten" werden sowohl die Empfänger (E-Mail-Anschriften im Bereich F6:F55) als auch die zu versendenden Tabellen der Datei (V2:V5) festgelegt.
Rainer ("wuxinese") hat mir hierzu den nachstehenden Code geschrieben, der der von mir (beschriebenen) Aufgabenstellung gerecht wird und wofür ich mich bei ihm an dieser Stelle nochmals ganz herzlich bedanken möchte.
Nun hätte ich ggf. noch einen Änderungswunsch:
Einzelne der zu versendenden Tabellenblätter enthalten im Modul der jeweiligen Tabelle Code, der ebenfalls "entfernt" werden sollte. Würde mich freuen, wenn ihr mir hierzu noch hilfreiche Vorschläge unterbeiten könntet.
Vielen Dank für jede Form von Hilfe.
mfg
Fritz
Hier Rainers Code:

Sub VersandTab()
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim ich, fort As Workbook
Dim blatt As Worksheet
Set ich = ThisWorkbook
Set fort = Workbooks.Add
Application.DisplayAlerts = False
fort.Worksheets(4).Delete
fort.Worksheets(3).Delete
fort.Worksheets(2).Delete
fort.Worksheets(1).Name = "WRZLBRNFT"
For i = 2 To 5
With ich.Worksheets("Daten")
If .Cells(i, "v").Text  "" Then
ich.Worksheets(.Cells(i, "v").Text).Copy after:=fort.Worksheets(fort.Worksheets. _
_
Count)
Set blatt = fort.Worksheets(fort.Worksheets.Count)
blatt.UsedRange.Copy
blatt.Range(blatt.UsedRange.Address).PasteSpecial xlPasteValuesAndNumberFormats
blatt.Shapes(1).Delete
Set blatt = Nothing
End If
End With
Next i
If fort.Worksheets.Count = 1 Then GoTo NixKopiert
fort.Worksheets("WRZLBRNFT").Delete
Dim anz_used As Double
Dim empf() As String
anz_used = 0
With ich.Worksheets("Daten")
For i = 6 To 55
If .Cells(i, "f").Text  "" Then
If anz_used = 0 Then
ReDim empf(0)
Else
ReDim Preserve empf(UBound(empf) + 1)
End If
empf(anz_used) = .Cells(i, "f").Text
anz_used = anz_used + 1
End If
Next i
If anz_used  0 Then
fort.SendMail empf, "Aktuelle Infos zum Tabellentippspiel", True
End If
End With
NixKopiert:
fort.Close False
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub


7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellen per EMail versenden - @wuxinese
29.08.2007 09:25:00
Rudi
Hallo,
versuchs mal so:

For i = 2 To 5
If ich.Worksheets("Daten").Cells(i, "v").Text  "" Then
ich.Worksheets(ich.Worksheets("Daten").Cells(i, "v").Text).Copy _
after:=fort.Worksheets(fort.Worksheets.Count)
Set blatt = fort.Worksheets(fort.Worksheets.Count)
blatt.UsedRange.Copy
blatt.Range(blatt.UsedRange.Address).PasteSpecial xlPasteValuesAndNumberFormats
blatt.Shapes(1).Delete
With blatt.Parent.VBProject.VBComponents(blatt.CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With
Set blatt = Nothing
End If
Next i


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Tabellen per EMail versenden - @wuxinese
29.08.2007 09:51:53
Fritz_W
Hallo Rudi,
super, dein Code funktioniert wie gewünscht. Vielen Dank!
Bei dem vorliegenden Code enthält die Mail lediglich einen Betreff und die Excel-Datei wird unter der Bezeichnung "Mappe*xls" als Anlage verschickt.
Ist es (ohne größere Umstände) möglich, folgendes zu ergänzen:
1. den Namen der zu versendenden Excel-Datei im Code festzulegen.
2. Ein oder zwei Sätze, die entweder im Code festgelegt werden oder (wünschenswertere Lösung) in
einem Bereich der Tabelle "Daten" z.B. V7:V9 enthalten sind als Text in die EMail einzufügen.
Nochmals herzlichen Dank und schöne Grüße
Fritz

Anzeige
AW: Tabellen per EMail versenden - @wuxinese
30.08.2007 05:57:00
Wuxinese
Hallo Fritz,
sorry, hat etwas gedauert, aber ab und an muss ich auch arbeiten...
Wenn Du folgenden Code verwendest

Application.ScreenUpdating = False
Application.EnableEvents = False
Dim ich, fort As Workbook
Dim blatt As Worksheet
Set ich = ThisWorkbook
Set fort = Workbooks.Add
Application.DisplayAlerts = False
fort.Worksheets(3).Delete
fort.Worksheets(2).Delete
fort.Worksheets(1).Name = "WRZLBRNFT"
For i = 2 To 5
With ich.Worksheets("Daten")
If .Cells(i, "v").Text  "" Then
ich.Worksheets(.Cells(i, "v").Text).Copy after:=fort.Worksheets(fort.Worksheets. _
Count)
Set blatt = fort.Worksheets(fort.Worksheets.Count)
blatt.UsedRange.Copy
blatt.Range(blatt.UsedRange.Address).PasteSpecial xlPasteValuesAndNumberFormats
With blatt.Parent.VBProject.VBComponents(blatt.CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With
Set blatt = Nothing
End If
End With
Next i
Dim anz_used As Double
anz_used = 0
If fort.Worksheets.Count = 1 Then GoTo NixKopiert
fort.Worksheets("WRZLBRNFT").Delete
Dim empf() As String
With ich.Worksheets("Daten")
For i = 6 To 55
If .Cells(i, "f").Text  "" Then
If anz_used = 0 Then
ReDim empf(0)
Else
ReDim Preserve empf(UBound(empf) + 1)
End If
empf(anz_used) = .Cells(i, "f").Text
anz_used = anz_used + 1
End If
Next i
Dim dateiname As String
NixKopiert:
dateiname = "C:\temp\DeinFilename.xls"
If anz_used  0 Then
fort.SaveAs dateiname
fort.SendMail empf, "Aktuelle Datenerfassung", True
fort.Close False
Kill dateiname
Else
fort.Close False
End If
End With
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.ScreenUpdating = True


dann kannst Du im Code Deinen Dateinamen angeben. Ob es moeglich ist, eine Mail mit Text zu verschicken, weiss ich leider nicht bzw. es ist wohl dann zu kompliziert fuer mich. Aber die Frage interessiert mich auch brennend, vielleicht weiss ja hier noch jemand eine Antwort. Waere schoen!
Gruss
Rainer

Anzeige
AW: Tabellen per EMail versenden - @wuxinese
30.08.2007 06:26:00
Wuxinese
Hallo Fritz,
ich habe doch noch eine Moeglichkeit gefunden, die zwar wahrscheinlich wieder nicht elegant ist, aber immerhin bei mir gerade funktioniert hat.
Einfach den letzten Teil des vorherigen Codes ab 'dim dateiname...' ersetzen mit:

Dim dateiname, email As String
NixKopiert:
dateiname = "C:\temp\DeinFilename.xls"
email = .Range("V7").Text & vbCrLf & vbCrLf & .Range("V8").Text & vbCrLf & vbCrLf & . _
Range("V9").Text
If anz_used  0 Then
fort.SaveAs dateiname
fort.HasRoutingSlip = True
With fort.RoutingSlip
.Delivery = xlAllAtOnce
.Recipients = empf
.Subject = "Aktuelle Datenerfassung"
.ReturnWhenDone = False
.Message = email
End With
fort.Route
fort.HasRoutingSlip = False
fort.Close False
Kill dateiname
Else
fort.Close False
End If
End With
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub


Wie gesagt, nicht elegant und wahrscheinlich werden sich viele hier die Haende vorm Kopf zusammenschlagen, aber es tut :-)
Gruss
Rainer

Anzeige
AW: Tabellen per EMail versenden - @wuxinese
30.08.2007 10:20:00
Fritz_W
Hallo Rainer,
ich bin für Deine Hilfe immer dankbar, egal wie lange es dauert.
Dein erster Code funktioniert auch bei mir tadellos.
Der Versuch mit dem zweiten Makro (EMail mit Text aus den Zellen Daten!V7:V9 zu versehen) scheiterte jedoch mit Hinweis auf die folgende Anweisung im Code:
fort.HasRoutingSlip = True
Weißt Du woran das liegt?
Nochmals vielen Dank und beste Grüße
Fritz

AW: Tabellen per EMail versenden - @wuxinese
31.08.2007 03:47:39
Wuxinese
Hallo Fritz,
ich verwende hier auch Excel 2003 und somit sollte es eigentlich schon funktionieren, ich kann mir nicht erklaeren, warum das bei Dir nicht geht.
Ich lade Dir mal meine Beispielmappe hoch, die ich gebastelt habe um das Ganze zu testen. Ich habs auch gerade nochmal ausprobiert, bei mir funktioniert es tadellos.
Verwendest Du Outlook (bei mir der Fall) oder ein anderes Mailprogramm, ich koennte mir vorstellen, dass die RoutingSlip-Sache evtl. nur mit Outlook funktioniert. Aber sicher bin ich mir da nicht, deswegen lass ich die Frage noch offen!
https://www.herber.de/bbs/user/45572.xls
Gruss
Rainer
P.S. Sicher ist man nie, vorausgesetzt, dass man sich dessen sicher sein kann ;-)

Anzeige
AW: Tabellen per EMail versenden - @wuxinese
31.08.2007 08:33:47
Fritz_W
Hallo Rainer,
wie wahr, die Computerei kann man in dieser Hinsicht durchaus mit der Meteorologie vergleichen.
Ich erhalte beim "Versand" deiner Arbeitsmappe das gleiche Ergebnis.
Das Problem hängt also wohl damit zusammen, dass ich als EMail-Programm nicht Outlook sondern IcrediMail verwende. Im Zusammenhang mit den vorherigen Codes spielte das jedoch keine Rolle.
Ich danke Dir nochmals für Deine Unterstützung.
Lasse die Frage als noch offen. Wenn ich weitere Erkenntnisse habe, melde ich mich noch einmal.
Beste Grüße
Fritz

323 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige