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

Change A1:A20 & Save Then Send

Change A1:A20 & Save Then Send
Glen
Hallo Freunde
Was ich habe:
Bearbeiter der Arbeitsmappe muss in der Spalte "A" einen Eintrag gemacht haben bevor ein Mail automatisch versendet wird. Läuft soweit. Aber ganau das ist gleichzeitig mein Problem, denn jetzt bekomme pro Eintrag in Spalte A eine E-Mail.
Das sollte ich haben:
Das Mail soll erst weg, wenn Einträge in Spalte "A" gemacht wurden UND die Arbeitsmappe gespeichert wird.
Es ist noch eine dritte Bedingung die allerdings bereits mit dem Code "mailen" läuft, nähmlich dass der Mailempfänger (immer die eine gleiche Adresse) darf beim Eintragen und sichern der Arbeitsmappe kein Mail erhalten.
Wer kann das ergänzen ?
Bitte dringend um Hilfe.
Habe heute schon mal etwas zu dieser Sache hochgepostet (Sorry). Bin Jetzt aber schon den dritten Tag an dem Problem und komme einfach nicht auf die Lösung. Habe schon dutzende von Beiträge aus dem Forum (aktuelle) und aus dem Archiv zum Thema "E-Mail aus Ecxel vesenden" gefunden, aber eine Sache (genau die, die ich noch haben sollte) finde ich nirgends.
Im Modul:
Sub mailen()
Dim ol, Mail As Object
'If Environ("Username") "HARRYLOOSER" Then
Set ol = CreateObject("Outlook.Application")
Set Mail = ol.CreateItem(0)
Mail.Subject = "Excel Datei (Kontrolle) bearbeiten " & Now
Mail.To = "harry.looser@LOSY.ch"
'mail.cc = ""
'mail.bcc = ""
Mail.body = "Diese Mail wurde nach dem sichern direkt aus Excel versandt. In der Liste" & " E:Lieferant\diverses\Elo.xls" & "wurde ein Eintrag vorgenommen, bitte bearbeiten." & Chr(13) & _
"" & Chr(13) & _
"" & Chr(13) & Chr(13)
Mail.Display
Mail.send
'End If
End Sub
In der Tabelle1:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then mailen
End Sub

Tausend Dank dem oder denen die eine Lösung haben.
Gruss
Glen

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

Betreff
Benutzer
Anzeige
AW: Change A1:A20 & Save Then Send
Ramses
Hallo
"...Das Mail soll erst weg, wenn Einträge in Spalte "A" gemacht wurden UND die Arbeitsmappe gespeichert wird..."
1. Welche Einträge und wieviele ?
2. Wenn ein Eintrag gemacht wurde, die Datei noch nicht gespeichert sein kann !
3. Wenn die Datei gespeichert wird, kein Anhaltspunkt vorhanden ist, ob ein Eintrag in A gemacht wurde.
Hier mal ein Ansatz der allerdings nicht getestet ist
In ein Modul
Public EnterA as Boolean
In das Klassenmodul der Tabelle
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then EnterA = True
End Sub

In das Klassenmodul der Arbeitsmappe
Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If PublicA = True And UCase(Environ("Username")) <> "HARRYLOOSER" Then
ThisWorkbook.Save
EnterA = False
Call Mailen
Exit Sub
End If
End Sub

Gruss Rainer
Anzeige
AW: Change A1:A20 & Save Then Send
Glen
Guten Tag Rainer
Ich verstehe das mit den Klassenmodulen in Arbeitsmappe/Tabelle nicht, mir fehlen hier leider absolut die Kenntnisse. Ich habe ein Beispiel mit deinen Codes (so wie ich das vestanden habe) vorbereitet und hier hochgeladen.
Nochmals kurz zum Ablauf.
1.Die Einkäufer rufen die Datei auf, tragen zeielweise Daten ein (können einzelene oder mehrere Einträge sein), dann sichern Sie die Datei und das Mail sollte jetzt raus. Im Beispiel sind das die roten Daten.
2. Der Kundendienst hat nun das Infomail mit einem Link zur Datei (Mail aus dem Makro, ohne Daten aus der Datei)bekommen und öffnet die Datei. Jetzt macht der Kundendienst seine Einträge (blaue Daten im Beispiel) und sichert wieder. Hier geht jetzt keine Mail raus.
3. Die Einkäufer öffnen die Datei einige Tage später wieder und tragen erneut etwas ein (orange Daten in "G"). Jetzt ist es wichtig, dass nach dem speichern keine Mail an den Kundendienst geht, da der Eintrag nicht in Spalte "A" gemacht wurde.
https://www.herber.de/bbs/user/5535.xls
Danke und Gruss
Glen
Anzeige
AW: Change A1:A20 & Save Then Send
Ramses
Hallo
Tut mir leid, ... wenn ich dir meine Rechnung für den Zeitaufwand senden kann dann, kümmere ich mich darum, aber ich erstelle keine kompletten Programme in meiner Freizeit gratis für eine Firma ;-)
Zu deinen Fragen
Klassenmodul der Tabelle = Rechte Maustaste auf Register == Code anzeigen
Klassenmodul der Arbeitsmappe = VB-Editor starten == Doppelklick auf "Diese Arbeitsmappe"
Und was ein Modul ist, weisst du ja ;-)
Gruss Rainer
Ich glaube das ist es fast !
Glen
Hallo
Verstehe ich nathürlich, dass du dich nicht mit meinen Problemen resp. mit den Problemen der Firma in der ich arbeite umsonst stundenlang rumschlägst. die Funktion brauche ich tatsächlich in der Firma, da dies viele Fehler, die zur Zeit geschehen, vermieden werden könnten und ich mich somit nicht immer mit den gleichen Themen und Mitarbeiter auseinander setzen müsste.
ABER :-)
vielleicht ist der Aufwand nicht mehr all zu gross, denn ich denke das es das nun fast ist. Ich habe das mit Klassenmodul in Arbeitsblatt/Tabelle nun begriffen und so ausgeführt. Jetzt kommt nur noch die Fehlermeldung "Variable nicht deviniert" und im Code in der Arbeitsmappe wird "PuplicA" markiert.
Wäre unendlich dankbar, wenn hierfür die Lösung gefunden würde.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If PublicA = True And UCase(Environ("Username")) <> "HARRYLOOSER" Then
ThisWorkbook.Save
EnterA = False
Call mailen
Exit Sub
End If
End Sub

Ansonsten muss ich das mit einer Schaltfläche lösen! aber dann vergessen die, nach zwei Wochen nicht benützen, dass sie die Schaltfläche klicken müssen :-(
Das ist es, was ich jetzt mit Hilfe des Forums, der Rechere und Rainer habe
https://www.herber.de/bbs/user/5551.xls
Gruss
Glen
Anzeige
AW: Ich glaube das ist es fast !
Ramses
Hallo
das muss in ein Modul in die erste Zeile
Public EnterA As Boolean
... und Schaltfläche brauchst du nicht. Das läuft automatisch.
Gruss Rainer
AW: Ich glaube das ist es fast !
Glen
Hallo
Ich bekomm's nicht automatisch zum laufen. Was meintest du mit "das muss in ein Modul"? Habe ein neues Modul eingefügt und
Public EnterA As Boolean
hinein kopiert. Habe die den Code auch in die erste Zeile des bestehenden Moduls eingefügt und es auch in Arbeitsmappe und Tabelle versucht. Ich habe die Codezeile
Public EnterA As Boolean
eigentlich überall einzusetzen versucht, aber nicht ging. Ich brauch noch immer Hilfe.
Gruss
Nervensäge Glen
Anzeige
AW: Ich glaube das ist es fast !
25.04.2004 22:18:52
Björn
Hallo Glen,
ich denke Rainer hat sich einfach verschrieben.
Versuch's statt mit "PublicA" doch mal mit "EnterA",
dann klappt's auch mit dem Nachbarn...
Gruß
Björn

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige