Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
840to844
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
840to844
840to844
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Auto. Benachrichtigung wenn E.Datei sich ändert!

Auto. Benachrichtigung wenn E.Datei sich ändert!
24.01.2007 08:43:22
Wolfgang
Hallo Excel Forum,
Ja ich schon wieder, sorry.
Mein Makro ist bei den Kollegen gut aufgenommen worden, und schon gibt es Verbesserungswünsche, die wenn ich ehrlich bin, auch berechtigt sind.
Heutiges Makro informiert die Kollegen wenn sich etwas in der Datei geändert hat und gespeichert wurde. Auch gibt es noch einmal ne Abfrage ob es nötig ist den Verteiler zu informieren.
Das erweiterte Makro soll nur die Kollegen informieren die von der jeweiligen Änderung (10 Tabellenblätter)betroffen sind. Dazu habe ich eine Blatt eingefügt mit einer Matrix welcher User bei einer Änderung der jeweiligen Tabellen informiert werden soll. Soweit so gut, nur wie sag ich's meinem Kinde?
Für Eure Hilfe schon mal im Vorraus herzlichen Dank.
Gruß
Wolfgang
https://www.herber.de/bbs/user/39895.xls

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auto. Benachrichtigung wenn E.Datei sich änder
24.01.2007 10:06:19
Matthias
Hallo Wolfgang,
erstmal würde ich die Tabelle so ändern:
Verteiler für Makro don't Touch
 ABCDEFGHIJKLMN
1    11        
2   Tabelle1Tabelle2Tabelle3Tabelle4Tabelle5Tabelle6Tabelle7Tabelle8Tabelle9Tabelle10 
3Vorname User 1Nachname User 1Vorname User 1 Nachname User 1xxx       2
4Vorname User 2Nachname User 2    xx     0
5Vorname User 3Nachname User 3Vorname User 3 Nachname User 3  xxxx    1
Formeln der Tabelle
C3 : =WENN(N3>0;A3&" "&B3;"")
N3 : =SUMMENPRODUKT((D$1:M$1=1)*(D3:M3="x"))
C4 : =WENN(N4>0;A4&" "&B4;"")
N4 : =SUMMENPRODUKT((D$1:M$1=1)*(D4:M4="x"))
C5 : =WENN(N5>0;A5&" "&B5;"")
N5 : =SUMMENPRODUKT((D$1:M$1=1)*(D5:M5="x"))
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Dann muss sichergestellt sein, dass in Zeile 1 der entsprechenden Spalte eine "1" eingetragen wird, wenn sich eine Tabelle ändert. Dazu ins Modul "ThisWorkbook":
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim rng As Range With Sheets("Verteiler für Makro don't Touch") Set rng = .Range("D2:M2").Find(What:=Sh.Name, LookAt:=xlWhole) If Not rng Is Nothing Then rng.Offset(-1, 0) = 1 End With End Sub
Dann muss die BeforeClose-Prodezur noch folgendenmaßen geändert werden:
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'wird nur gesendet, wenn seit letztem Speichern Änderungen in Datei vorgenommen wurden If MsgBox("Soll der Verteiler über die Änderung informiert werden?", vbQuestion + vbYesNo, "Nachfrage") = vbYes Then 'MsgBox fragt nach ob Verteiler informiert werden soll If ThisWorkbook.Saved Then Dim MailDoc As Object, OutApp As Object 'Set OutApp = CreateObject("Notes.Application")' Set LNSession = CreateObject("Notes.NotesSession") Set LNDb = LNSession.GetDatabase("", "") If LNDb.IsOpen = True Then 'Already open for mail Else LNDb.OPENMAIL End If Set MailDoc = LNDb.CREATEDOCUMENT MailDoc.Form = "Memo" MailDoc.Subject = "Meldung von Excel " & Date & " " & Time MailDoc.Body = "Das Dokument hat sich geändert." & vbCrLf & "Ihr findet das Dokument auf Laufwerk S" & vbCrLf & "Files." MailDoc.send 0, Empfaenger 'siehe neue Funktion!! Set LNSession = Nothing Set LNDb = Nothing Set MailDoc = Nothing End If End If 'Änderungsmarkierungen löschen und nochmal speichern With Sheets("Verteiler für Makro don't Touch") If WorksheetFunction.CountA(.Range("D1:M1")) > 0 Then .Range("D1:M1").ClearContents Me.Save End If End With End Sub
Die o.g. Prozedur verwendet die Funktion "Empfaenger()", welche die zu Benachrichtigenden Personen in einem Array wiedergibt:

Function Empfaenger()
Dim rng As Range, z As Range, kette As String
'Bereich, in dem die Empfängernamen stehen:
Set rng = Sheets("Verteiler für Makro don't Touch").Range("C3:C37")
For Each z In rng
If z.Value <> "" Then kette = kette & z.Value & ","
Next z
'letztes Komme entfernen:
kette = Left(kette, Len(kette) - 1)
'in Array wandeln:
Empfaenger = Split(kette, ",")
End Function

Anmerkung: hier werden viele absolute Werte verwendet (Name des Tabellenblattes, Bereiche, in denen die Zuordnungen stehen... Ich empfehle die, diese Werte als globale Konstanten zu definieren, so dann du sie bei einer Änderung nur einmal in Code anpassen musst.
Viel Erfolg,
Matthias
Anzeige
AW: Auto. Benachrichtigung wenn E.Datei sich änder
24.01.2007 12:31:12
Wolfgang
Hallo Matthias,
recht vielen Dank.
Ich melde mich ganz bestimmt wieder und werde berichten.
HAbe leider im Moment wenig Zeit.
Nochmal recht herzlichen Dank.
Gruß aus Trebur
Wolfgang

8 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige