Herbers Excel-Forum - das Archiv

Auto. Benachrichtigung wenn E.Datei sich ändert!

Bild

Betrifft: Auto. Benachrichtigung wenn E.Datei sich ändert!
von: Wolfgang

Geschrieben am: 08.01.2007 15:37:45
Hallo Gemeinde,
Punkt 1 meiner Anfrage von Samstag habe ich selbst lösen können.
Bleibt Punkt 2 übrig.
Hier das Makro.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'wird nur gesendet, wenn seit letztem Speichern Änderungen in Datei vorgenommen wurden
If Not ThisWorkbook.Saved Then
Dim MailDoc As Object, OutApp As Object
'Set OutApp = CreateObject("Notes.Application")'
Dim recipients(1 To x) As String
'Gibt an wieviele Personen die Benachrichtigung bekommen sollen
Set LNSession = CreateObject("Notes.NotesSession")
Set LNDb = LNSession.GetDatabase("DERUEMA03/M/GMSERVER/GMC", "MAIL\E\FZHR7L.nsf")
Set MailDoc = LNDb.CREATEDOCUMENT
'Set maildoc = LNDb.NotesDocument(LNDb)
MailDoc.Form = "Memo"
MailDoc.Subject = "Meldung von Excel" & Date & Time
MailDoc.Body = "Test"
recipients(1) = "x"
recipients(2) = "x"
recipients(3) = "x"
MailDoc.send 0, recipients
Set LNSession = Nothing
Set LNDb = Nothing
Set MailDoc = Nothing
End If
End Sub

Zur Zeit werden x Personen informiert wenn sich die Datei ändert.
Aber nur wenn die Änderung von
Set LNDb = LNSession.GetDatabase("DERUEMA03/M/GMSERVER/GMC", "MAIL\E\FZHR7L.nsf")
ausgeführt wird.
Wie muß ich das Makro erweitern wenn auch User
("DERUEMA04/M/GMSERVER/GMC", "MAIL\K\ZZt1zp.nsf")bzw. andere User
Änderungen vornimmt / vornehmen.
VG
Wolfgang
Bild

Betrifft: AW: Auto. Benachrichtigung wenn E.Datei sich ändert!
von: Bertram

Geschrieben am: 08.01.2007 15:51:32
Hallo Wolfgang,
kann deine Zeile
Set LNDb = LNSession.GetDatabase("DERUEMA03/M/GMSERVER/GMC", "MAIL\E\FZHR7L.nsf")
nicht ganz nachvollziehen, aber so funktioniert's bei mitr einwandfrei:
'Beginn Ausschnitt
Set db = session.GETDATABASE("", "")
If db.IsOpen = False Then db.OPENMAIL
On Error GoTo Fehler
Set doc = db.CREATEDOCUMENT
doc.Form = "Memo"
doc.logo = "whatever"
doc.SendTo = cstrTo
doc.CopyTo = Recipients() 'Komplettes Empfängerfeld
doc.BlindCopyTo = "Bertram Mueller"
doc.Subject = cstrBetreff
doc.body = cstrText1
doc.SIGN = "0"
doc.SAVEMESSAGEONSEND = True
doc.PostedDate = Now()
Call doc.send(False, strTo)
Set db = Nothing
Set doc = Nothing
Set session = Nothing
Bei Call doc.send(False,strTo) steht zwar nur eine Adresse drin, aber alle Recipients() in doc.CopyTo kriegen die Mail auch.
Hoffe das hilft dir irgendwie weiter:-)
Gruß
Bertram
Bild

Betrifft: AW: Auto. Benachrichtigung wenn E.Datei sich ändert!
von: Wolfgang

Geschrieben am: 08.01.2007 18:27:31
Hallo Betram,
vielenn Dank für Deinen Vorschlag. Habe aber wie es aussieht erst am Samstag etwas Zeit Dein Makro auszuprobieren. Falls ich noch fragen habe komme ich auf Dich zurück.
Zu Deiner Frage was ich mit
Set LNDb = LNSession.GetDatabase("DERUEMA03/M/GMSERVER/GMC", "MAIL\E\FZHR7L.nsf")
meine....nun ich dachte ich muß dem Makro sagen wo und auf welchem Surver mein Lotus Motes hinterlegt ist.
Bin echt mal auf Dein Makro gespannt, Bisdahin vielen Dank und Gruß aus Trebur.
Wolfgang
Bild

Betrifft: AW: Auto. Benachrichtigung wenn E.Datei sich ändert!
von: Wolfgang

Geschrieben am: 09.01.2007 08:46:35
Hallo Bertram,
hab doch etwas Zeit gefunden.
Mein Makro läuft auch und es entspricht so ziehmlich Deinem.
Die Frage ist wie ändere das Makro wenn ich mehr wie eine
Set Db = session.GetDatabase("", "")
habe.
Dh. es können 30 Leute (das heißt auch 30 verschieden "Getdatabase Info") das Doc. ändern, und bei jedem soll nach der Änderung alle informiert werden. Wie ich alle Recipients informiere ist klar.
Vielleicht hast Du ja noch mal Zeit und schaust rein.
Vielen Dank
Wolfgang
Bild

Betrifft: AW: Auto. Benachrichtigung wenn E.Datei sich ändert!
von: Bertram

Geschrieben am: 09.01.2007 10:12:34
Hallo Wolfgang,
liegt denn das Doc in einer Lotus Notes Datenbank oder was für ein Doc ist das? Falls es in einer LN-Datenbank ist, muss ich vorerst passen. Damit hab ich mich noch nicht so ausgiebig beschäftigt. Bei mir geht's meistens um den automatischen Versand von Excel-Dateien als Attachment.
Gruß
Bertram
Bild

Betrifft: AW: Auto. Benachrichtigung wenn E.Datei sich ändert!
von: Wolfgang

Geschrieben am: 09.01.2007 11:16:13
Hallo Bertram,
ich glaube wir reden etwas aneinander vorbei.
Unter
Set Db = sessino.GetDatabase
verstehe ich die Database des momentanen Nutzers der das Doc. ändert.
Kurz gesagt der Absender der die Mail verschickt = derjenige der das Doc. geändert hat.
Wenn nun mein Kollege das Doc. ändert und das Mail verschickt wird, ist dieser der Absender der Mail.
Folglich muß das Makro erkennen wer das Doc. bearbeitet umd folglich die richtige Database freischaltet.
Pfff...ich hoffe ich konnte etwas licht in dunkle bringen.
Vielen Dank für Deine Mühe.
Gruß
Wolfgang
P.S Das Doc. ist auf einem Public Laufwerk.
Bild

Betrifft: AW: Auto. Benachrichtigung wenn E.Datei sich ändert!
von: Bertram

Geschrieben am: 09.01.2007 14:57:52
Hallo Wolfgang,
glaube jetzt hab ich's kapiert:-)
ob ich dir wirklich helfen kann weiß ich nicht, aber da du ja den (die) Server und die NSFs mit namen kennst, sollte das nicht so schwer sein.
Woher weißt du die übrigens? Kann man die auslesen?
Falls ja, dann lies doch beides in Variablen ein und öffne die Database mit den Variablen.
Set LNDb = LNSession.GetDatabase(DerServer, DieNSF)
Falls du eine Lösung findest, würde die mich auch brennend interessieren....
Gruß
Bertram
Bild

Betrifft: AW: Auto. Benachrichtigung wenn E.Datei sich ändert!
von: Wolfgang

Geschrieben am: 11.01.2007 12:06:34
Hallo Bertram,
schön das wir jetzt auf dem gleichen Stand sind.
Nun den Server und User ID von den jeweiligen Mitarbeitern habe ich. Da ich erst im Oktober 2006 einen Einsteiger Kurs VBA besucht habe, sind viele Ratschläge erst einmal Böhmische Dörfer für mich.
Ich hatte mir schon so etwas gedacht das ich den jeweiligen User ausgelesen muß.
Dies müßte uach möglich sein, denn wenn das bereits geöffnete Doc. von jemand anderem geöffnet wird, bekommt dieser ja die Meldung das user xyz das bereits Doc.geöffnet hat.
Nur wo das im Excel abgelegt wird, das weiß ich nicht.
Wenn man dies auslesen könnte, dürfte der Rest kein Problem mehr sein den richtigen User in die Set LNDb = LNSession.GetDatabase zu schreiben.
Hast Du ne Idee?
Gruß
Wolfgang
Bild

Betrifft: AW: Auto. Benachrichtigung wenn E.Datei sich ändert!
von: Bertram

Geschrieben am: 11.01.2007 17:21:34
Hallo Wolfgang,
das Problem ist, dass der Username in Excel ein anderer ist, als der von Lotus Notes.
Excel-Username findest du unter Extras-Optionen-Allgemein bzw. mit Application.UserName auslesen
Lotus-Username: In deinem Bsp. mit LNSession.UserName auslesen
Evtl. müsste man in der Exceldatei selbst ein Tabellenblatt mit allen Excel-Usernames, Servern und LN-Usernames erstellen und vor dem senden per SVerweis oder sowas den passenden Server und LN-Name zum Excelname finden und an die Prozedur übergeben.
Hoffe du kannst draus was stricken:-)
Gruß
Bertram
 Bild