4.6k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo ich habe da ein Problemm! vieleicht kann mir ja jemand helfen wäre echt super !!!!!!!!!!!!!!!!!!

Ich möchte eine e-mail aus meiner excel datei senden,meine Tabelle
bestet aus werten in A5 bis S1504.
jetzt möchte ich wenn zelle z.b. S5 rot ist das er mir die werte die in
zelle A5 bis H5 in eine e-mail schreibt und sendet,es können bis zu zehn zellen auf einmal rot sein das ist verschieden.
wenn er dan die e-mail zu einer bestimmten adresse gesendet hat soll excel mir die zellen in S die vorher rot waren grün einfärben... ??!

ist das irgend wie machbar ??

danke schon mal für eure hilfe !!!!!!!!!!!!!!!

gruß nero.

16 Antworten

0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Ja, das ist irgendwie machbar. Folgende Dinge sind dabei aber klarzustellen:[list]
[*]Das geschieht nicht automatisch - soll heißen: du müsstest erst einen Button anklicken und dann wird geprüft, ob gewisse Zellen "rot" sind (Hintergrund? Rahmen? Textfarbe?)
[*]Eine komplette E-Mail "verschicken" kommt nur dann in Frage, wenn du (bzw. jeder, der die Excel-Datei verwendet) auch Outlook auf dem Rechner installiert hast. Und selbst dann bleibt es etwas aufwendig.
[*]Was aber recht einfach zu bewerkstelligen ist: einfach den installierten E-Mail-Client zu öffnen mit dem vorgegebenen Empfänger, Betreff und Inhalt. Die bräuchte man dann bloß noch im E-Mail-Client abzuschicken.
[/list]
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo nero,

für einen einfachen e-mail-Versand kannst du auch das Programm emailrelay nehmen.
da kannst du eine Textdatei in ein vordefiniertes Verzeichnis schreiben und verschicken
lassen. Einfach mal googeln.

Gruß Ralf
0 Punkte
Beantwortet von
hallo danke schon mal füe eure antworten !!!!

son_quatsch !!

also das was du in punkt 1 von deiner antwort schreibst mit den
Button ist klar !!

und Outlook habe ich auch auf meinen rechner, die e-mail soll auch nur zu einem Empfänger gesendet werden !!!

ist es den auch möglich wenn er die mail gesendet hat das er mir die
zelle die rot war auch grün einfärbt ???

ich möchte ja auch wissen welche ich schon verschikt habe !!!!

dnke schon mal für eure hilfe !!!

gruß nero
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Zum Test machst du folgendes: Erstell eine neue Excel-Datei. Formatier die einzelnen Zellen im Bereich A1:B5 nach deinen Wünschen (Hintergrundfarbe, Rand usw). Einer oder mehreren der Zellen von C1:C5 gibst du einen grünen Hintergrund (damit meine ich das helle Grün in der Farbauswahl in der vierten Zeile von oben). Jetzt noch einen Button hinzufügen. Dann Extras -> Makro -> Visual Basic-Editor. Dort fügst du folgenden Code ein (und überschreibst bestehenden):

Sub Mail_Sheet_Outlook_Body(rng As Range)
Dim oOutApp As Object, oOutMail As Object
With Application
.EnableEvents = False
.ScreenUpdating = False
End With

Set oOutApp = CreateObject("Outlook.Application")
oOutApp.Session.Logon
Set oOutMail = oOutApp.CreateItem(0)

On Error Resume Next
With oOutMail
.to = "name@host.de"
.CC = ""
.BCC = ""
.Subject = "This is the Subject line"
.HTMLBody = RangetoHTML(rng)

'.Send ' E-Mail senden
.Display ' E-Mail in Outlook anzeigen (vorm Senden)
End With
On Error GoTo 0

With Application
.EnableEvents = True
.ScreenUpdating = True
End With

Set oOutMail = Nothing
Set oOutApp = Nothing
End Sub
Function RangetoHTML(rng As Range)
Dim ofso As Object, ots As Object
Dim sTempFile As String
Dim wTemp As Workbook

sTempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

'Copy the range and create a new workbook to past the data in
rng.Copy
Set wTemp = Workbooks.Add(1)
With wTemp.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With

'Publish the sheet to a htm file
With wTemp.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=sTempFile, _
Sheet:=wTemp.Sheets(1).Name, _
Source:=wTemp.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With

'Read all data from the htm file into RangetoHTML
Set ofso = CreateObject("Scripting.FileSystemObject")
Set ots = ofso.GetFile(sTempFile).OpenAsTextStream(1, -2)
RangetoHTML = ots.ReadAll
ots.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")

wTemp.Close savechanges:=False
Kill sTempFile

Set ots = Nothing
Set ofso = Nothing
Set wTemp = Nothing
End Function

Private Sub CommandButton1_Click()
Dim bSenden As Boolean
Dim i1 As Integer

For i1 = 1 To 5
If Cells(i1, 3).Interior.Color = RGB(256, 0, 0) Then ' Farbe Rot
bSenden = True
Cells(i1, 3).Interior.Color = RGB(0, 256, 0) ' Farbe Grün
Exit For
End If
Next i1

If bSenden Then Mail_Sheet_Outlook_Body Range("A1:B5")
End Sub


Betätigst du den Button, passiert nichts. Warum? Die Spalte C hat höchstens eine Zelle mit grünem Hintergrund. Also mach rot draus (hellrot, dritte Zeile in Farbauswahl). Nochmal Button klicken. Jetzt müsste Outlook die Mail anzeigen.

Hat das alles funktioniert? Dann such im Quellcode nach .Display, kommentier das aus und entkommentier das darüberliegende .Send. Klappt hervorragend mit Excel 2003 und Outlook 2003.
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Ach ja - gefunden hab ich das ganze hier: www.rondebruin.nl/mail/folder3/mail2.htm
0 Punkte
Beantwortet von
Hallo Nero,
wenn in der Tabelle immer nur eine Zelle rot (aktive) gegenzeichnet wäre, könnte man einen bestimmten Bereich in der Zeile in das E-Mail automatisch übertragen und senden.
In der aktiven Zelle sollte dann die Farbe gelöscht werden.
Die Zelle in der Spalt S könnte dann grün gekennzeichnet werden.

Gruß
fedjo
0 Punkte
Beantwortet von
Hallo nero,
ich hab dir mal eine Mustertabelle erstellt.

Zum testen Empänger Mail Adresse ändern (sAdress = "Mustermann@freenet.de"
Es werden bis zu zehn Zellen die rot gefärbt sind in die E-Mail übertragen und dann grün eingefärbt.
Solle die E-Mail gleich gesendet werden:
Display durch Send ersetzen.



E-Mail
0 Punkte
Beantwortet von
Hallo fedjo !!!

Habe deine datei mal getestet !!! super das ist genau das was ich suche !!!!
aber leider habe ich ein problem ich bekomme das makro einfach nicht in meiner
Datei zum laufen...?!

In meiner Datei sind drei Tabellen

Eingabe Termine / Termine KW / Auftragsdaten-Werkstatt

das Makro muß in Termine KW ausgeführt werden !!
1) Die Tabelle Termine KW ist gesichert mit Passwort
2) die liste wird je nach woche und aufträge mal länger mal kürzer
da ich mit teilergebnissen rechne und er mir die übrigen zellen ausblendet.

danke schon mal für deine Hilfe !!!! super nett von euch allen hier !!!!!!!!!!!!!!!!!!!!!

gruß nero
0 Punkte
Beantwortet von
Hallo nero,
habe den Code umgestellt auf: Worksheets("Termine KW").
Schreibschutz wird aufgehoben: Sheets("Termine KW").Unprotect "nero" ' Schutz wird aufgehoben, dein Passwort
Tabellenblatt schützen: Sheets("Termine KW").Protect "nero" ' Schreibschutz, dein Passwort

Du kannst ja auch deine Datei hier hochladen, ich werde dann den Code einfügen und anpassen.

Mustertabelle: Mail
0 Punkte
Beantwortet von
Hallo fedjo !!!
Kann ich dir meine datei auch mailen !!
nero.
...