Autor Thema: Doclink eines Excel-Anhangs in Excel ermitteln  (Gelesen 4398 mal)

Offline lawern

  • Frischling
  • *
  • Beiträge: 7
Doclink eines Excel-Anhangs in Excel ermitteln
« am: 02.11.11 - 17:21:27 »
Wir entwickeln eine Lösung für die Dokumentation von Excel-Dateien, welche als Anhänge in Notes-Dokumenten gespeichert sind.
Unter anderem möchten wir auch die Herkunft einer Excel-Datei dokumentieren.
Hier haben wir folgendes Problem: Von Excel-Dateien, die aus Notes-Datenbanken geöffnet werden, bekommt Excel nur einen temporären Datei-Pfad.
Ist es möglich in Excel herauszufinden aus welcher Notes-Datenbank die Datei geöffnet wurde?
Ist es möglich soetwas wie den Doclink in Excel zu ermitteln? Geht das evtl. über die Notes-Client-API?

Vielen Dank

Lars
« Letzte Änderung: 02.11.11 - 17:31:13 von lawern »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Doclink eines Excel-Anhangs in Excel ermitteln
« Antwort #1 am: 02.11.11 - 17:34:54 »
Servus Lars, und willkommen bei AtNotes!

In Excel selbst hast Du keine Chance, auf irgendwelche Informationen zurückzugreifen, die den Ursprungsort des ehemaligen Attachments in Notes betreffen.
Wenn Du das Öffnen des Sheets allerdings in Notes entsprechend gestaltest, dann kannst Du Excel alles mitgeben, was Du benötigst.

Bernhard

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Doclink eines Excel-Anhangs in Excel ermitteln
« Antwort #2 am: 02.11.11 - 17:42:25 »
Man müsste etwas mehr darüber wissen, was Ihr genau vorhabt. Wenn Ihr einen Katalog über Dateien aufbauen wollt, könnt Ihr auch im Nachgang entweder über einen periodischen Agenten die Informationen einsammeln, oder z.B. beim Schließen der Dokumente den Katalog aktualisieren.

 

Offline lawern

  • Frischling
  • *
  • Beiträge: 7
Re: Doclink eines Excel-Anhangs in Excel ermitteln
« Antwort #3 am: 02.11.11 - 17:46:23 »
Ich dachte mir, dass der Notes Client ja irgendwo eine Tabelle halten muss in der steht welche temporäre Datei zu welchem Notes-Attachment gehört.
Schließlich muss er die aktualisierten Dateien ja auch wieder zurückschreiben.

Offline lawern

  • Frischling
  • *
  • Beiträge: 7
Re: Doclink eines Excel-Anhangs in Excel ermitteln
« Antwort #4 am: 02.11.11 - 17:58:16 »
Man müsste etwas mehr darüber wissen, was Ihr genau vorhabt. Wenn Ihr einen Katalog über Dateien aufbauen wollt, könnt Ihr auch im Nachgang entweder über einen periodischen Agenten die Informationen einsammeln, oder z.B. beim Schließen der Dokumente den Katalog aktualisieren.

Wir möchten vermeiden, dass wir Änderungen an den Notes-DBs vornehmen müssen.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Doclink eines Excel-Anhangs in Excel ermitteln
« Antwort #5 am: 02.11.11 - 17:59:50 »
Wir möchten vermeiden, dass wir Änderungen an den Notes-DBs vornehmen müssen.
Okay, dann die klare Aussage: Keine Chance, an erweiterte Informationen zu kommen.

Bernhard

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Doclink eines Excel-Anhangs in Excel ermitteln
« Antwort #6 am: 02.11.11 - 18:29:39 »
Ich dachte mir, dass der Notes Client ja irgendwo eine Tabelle halten muss in der steht welche temporäre Datei zu welchem Notes-Attachment gehört.
Schließlich muss er die aktualisierten Dateien ja auch wieder zurückschreiben.
Glaube ich nicht, zumindest nicht so, dass man da ran kommt.

Wenn in Notes ein Dateianhang gestartet wird, wird er temporär abgelegt. Da Notes die Datei selbst speichert, kennt es natürlich auch zum späteren Wiederanhängen Pfad und Dateinamen. Und genau dort holt Notes die Datei wieder ab, die Information muss daher auch nicht extern verfügbar sein.

Du kannst das selbst testen, indem Du einen Dateianhang aus Notes mit "Bearbeiten" öffnest, dann die Datei änderst und mit "Speichern unter ..." woanders ablegst. Dann wird die Änderung natürlich nicht ins Notesdokument übernommen, da Notes nicht wissen kann, was Du nach dem Öffnen mit der Datei gemacht hast. Da gibt es also nichts, was irgendwie darauf hindeutet, dass da eine gemeinsam verfügbare Tabelle existiert.

Vielleicht könntest Du aus Excel heraus irgendwie das aktuelle Notes-Fenster finden und darüber an die Information gelangen (keine Ahnung, nur eine Idee), dann müsstest Du aber in jeder Exceldatei eine Routine laufen haben. Wo soll die denn sein, wenn Du keine Änderung in Notes vornehmen willst? Ein Macro, das in jeder Exceldatei vorhanden sein muss und bei jedem Öffnen einer Exceldatei läuft, kann ich mir wirklich nicht vorstellen. Oder irgendein Programm, das auf Betriebssystem-Events reagiert (speichern einer Exceldatei irgendwo auf der Platte), dass dann auf jedem Rechner vorhanden und aktiv sein muss? Und woher weißt Du, ob die Datei auch wirklich wieder in Notes angehängt wurde?

Ich sehe das daher so wie Bernhard, ohne Änderungen in Notes kann ich mir das aus meiner (auf Notes beschränkten) Sicht auch nicht vorstellen.

Offline lawern

  • Frischling
  • *
  • Beiträge: 7
Re: Doclink eines Excel-Anhangs in Excel ermitteln
« Antwort #7 am: 02.11.11 - 19:56:11 »
Vielleicht könntest Du aus Excel heraus irgendwie das aktuelle Notes-Fenster finden und darüber an die Information gelangen (keine Ahnung, nur eine Idee), dann müsstest Du aber in jeder Exceldatei eine Routine laufen haben. Wo soll die denn sein, wenn Du keine Änderung in Notes vornehmen willst? Ein Macro, das in jeder Exceldatei vorhanden sein muss und bei jedem Öffnen einer Exceldatei läuft, kann ich mir wirklich nicht vorstellen. Oder irgendein Programm, das auf Betriebssystem-Events reagiert (speichern einer Exceldatei irgendwo auf der Platte), dass dann auf jedem Rechner vorhanden und aktiv sein muss? Und woher weißt Du, ob die Datei auch wirklich wieder in Notes angehängt wurde?

Das Excel-Problem habe ich im Griff. Das ist nicht das Problem. Wir haben dafür ein Excel-AddIn gebaut, welches mit Excel gestartet wird.
Dieses AddIn bekommt mit welche Dateien geöffnet werden und wohin sie wieder gespeichert werden.
Mein Problem ist, dass ich micht mit den Möglichkeiten des Notes-Clients nicht auskenne.
Ich dachte, da der Notes-Client ja eine API hat, dass man darüber an die Information kommen kann woher so eine temporäre Datei stammt. Der Notes-Client muss es sich ja auch irgendwo merken.

Lars

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Doclink eines Excel-Anhangs in Excel ermitteln
« Antwort #8 am: 02.11.11 - 20:44:44 »
Nicht so schnell aufgeben, schau mal hier
http://www.kalechi.com/doc/notesini.nsf/85255a87005060c585255a850068ca6f/005d5bb8854cee38c1256d6e007dd450!OpenDocument
bzw. hier
http://www.wissel.net/blog/d6plinks/SHWL-84NJED

ein erster Versuch zeigte aber, dass beim Anklicken eines Attachments ein GETOBJECT_RQST abgesetzt wird, aber keine weiteren Infos darin enthalten sind.  :-:

Evtl musst du dir eine DLL basteln und mittels NSF_HOOKS in die Notes.ini einbauen, dann könntest du die angeklickten Attachments überwachen.
Dies ist aber keinesfalls trivial

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Doclink eines Excel-Anhangs in Excel ermitteln
« Antwort #9 am: 02.11.11 - 21:00:38 »
Als ich sowas mal gebaut hatte (bevor Notes Dateien direkt aus dem Anhang bearbeiten konnte), habe ich mir den Dateinamen der temporären Datei in einer Scriptvariablen gemerkt, und ich wage zu behaupten, dass man da mit keinem externen Werkzeug an die Information herankommt. Obwohl die Information natürlich irgendwo im Arbeitsspeicher liegt.

So ganz verstanden habe ich zwar immer noch nicht, was nachher als Ergebnis herauskommen soll. Aber irgendwie hört sich das ja doch nach einer Art Katalog an. Wäre es da nicht einen Gedanken wert, einen Agenten zu schreiben, der über die gespeicherten Dokumente geht und die Informationen sammelt?

Wobei Du natürlich dann nur die Dateinamen der Anhänge bekommst, und die können natürlich zu tausenden identisch sein. Ist dann die Frage, was das aussagt.

Von der Exceldatei als Quelle auszugehen, halte ich - nach meinem derzeitigem Wissensstand über Euer Vorhaben - für falsch herum (mag mich aber gerne irren).

  • Datei wird an Notes angehängt, danach wird das Dokument wieder gelöscht, Datei existiert noch
  • Datei wird angehängt, Dokument aber nie gespeichert
  • Datei wird angehängt, Dokument gesendet, aber nicht gespeichert
  • Datei geht per Mail ein, wird aber nie geöffnet (Euer AddIn startet dadurch nie)
  • Dokument wird in andere Datenbank kopiert, Datei nicht geöffnet
  • Dokument wird gelöscht
  • usw.

M.E. kann die Informationsquelle nur das Notesdokument sein, nicht die Exceldatei

Offline lawern

  • Frischling
  • *
  • Beiträge: 7
Re: Doclink eines Excel-Anhangs in Excel ermitteln
« Antwort #10 am: 02.11.11 - 21:38:57 »
Der Vorschlag von Roland klingt schon spannend. Ich werde morgen mal ausprobieren welche Infos ich so bekomme.
Gibt es irgendwo Beispiel-Source-Code für so einen NSF_HOOK?

So ganz verstanden habe ich zwar immer noch nicht, was nachher als Ergebnis herauskommen soll. Aber irgendwie hört sich das ja doch nach einer Art Katalog an. Wäre es da nicht einen Gedanken wert, einen Agenten zu schreiben, der über die gespeicherten Dokumente geht und die Informationen sammelt?

Wobei Du natürlich dann nur die Dateinamen der Anhänge bekommst, und die können natürlich zu tausenden identisch sein. Ist dann die Frage, was das aussagt.

Von der Exceldatei als Quelle auszugehen, halte ich - nach meinem derzeitigem Wissensstand über Euer Vorhaben - für falsch herum (mag mich aber gerne irren).

Ergebnis ist eine Liste aller Excel-Dokumente im Unternehmen. Nur ein Teil der Dokumente ist in Notes-DBs gespeichert, der Rest liegt auf File-Servern.
Die Notes-DBs zu modifizieren kommt leider aus politischen Gründen erstmal nicht in Frage.

Lars

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Doclink eines Excel-Anhangs in Excel ermitteln
« Antwort #11 am: 02.11.11 - 23:36:27 »
google mal nach "DBHOOKVEC", wenn du russisch kannst gibts auch etwas Beispielcode ;)

soweit ich das verstehe, wirst du über jede geöffnete / gespeicherte Note in der DLL benachrichtigt. D.h. du kannst nicht herausfinden, ob und wann ein Anhang angeklickt wurde. (also eher weniger für dein Vorhaben geeignet)

Bei meiner Suche bin ich noch über den Lotus Notes Extension Manager gestolpert. (war mir bis jetzt auch neu)
http://www-12.lotus.com/ldd/doc/tools/c/6.0.2/api60ref.nsf/0/CCB2911F1DF6C7AF8525681000480140?OpenDocument
Damit kann man sich für jede C-Api Funktion ein Callback registrieren lassen. (z.B. EM_NSFNOTEEXTRACTFILE )
-> http://www-12.lotus.com/ldd/doc/tools/c/6.0.2/api60ref.nsf/0/85255D56004D3F6385255BA400093629?OpenDocument

file_name wäre dann deine Datei (Vermutlich gleich der Pfad im Temp-Dir)
und handle das Handle zum Dokument. Mittels NSFNoteGetInfo o.ä. kannst du weitere Infos aus dem Dokument auslesen und dir in ein Textfile oder wohin auch immer eine Tabelle mit UNID<=>Filename ablegen.


(Zur Umsetzung sind allerdings schon fortschrittliche C + Notes-C-API Kenntnisse erforderlich)

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: Doclink eines Excel-Anhangs in Excel ermitteln
« Antwort #12 am: 03.11.11 - 09:12:11 »
Laut Objektkatalog in Excel kennt dieses auch CustomProperties. Damit habe ich mit Word schon sehr gute Erfahrungen gemacht. Funktioniert folgendermaßen (und einwandfrei ;)):

In Notes gibt es eine Funktion (LotusScript) zum Öffnen des Anhangs. Diese öffnet und instanziert Word als OLE-Objekt. Die Datei wird in einen speziellen Pfad (Lokale Einstellungen im UserProfile) entpackt, in Word geöffnet und gleichzeitig ebenfalls als OLE-Objekt verknüpft. In den CustomProperties des Word-Dokuments kann man sich dann mit der Methode Add beliebig austoben, um z.B. DB-Eigenschaften aus Notes bzw. die DocUNID festzuhalten. Parallel lade ich ein AddIn mit Makros, welches mit (auch aus Notes produzierten) Schaltflächen in Word verknüpft wird. Diese dienen dazu, Änderungen in Word direkt zu speichern und den Anhang in Notes zu aktualisieren. Entgegen kommt mir dabei, dass der Anhang sich nicht im aktuellen Notes-Dokument, sondern in Antwortdokumenten befindet, so dass hier nix mit dem FrontEnd durcheinandern kommt.
Es ist auch kein Problem, ein Makro in Word / Excel von Notes aus zu starten, welches die Informationen weiterverarbeitet.

Sollte alles auch in Excel funktionieren, d.h. dort kannst Du die CustomProperties wieder auslesen und weißt, woher das Ganze stammt...

Mit der saved-Eigenschaft des Objektes lässt sich übrigens verhindern, dass das Hinzufügen der CustomProperties als Änderung "wahrgenommen" wird.

Edit: CustomProperties beziehen sich auf die Excel-Applikation, für die Arbeitsmappe heißen die CustomDocumentProperties.
« Letzte Änderung: 03.11.11 - 09:18:10 von marschul »
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

Offline lawern

  • Frischling
  • *
  • Beiträge: 7
Re: Doclink eines Excel-Anhangs in Excel ermitteln
« Antwort #13 am: 03.11.11 - 09:49:33 »
Laut Objektkatalog in Excel kennt dieses auch CustomProperties. Damit habe ich mit Word schon sehr gute Erfahrungen gemacht. Funktioniert folgendermaßen (und einwandfrei ;)):

In Notes gibt es eine Funktion (LotusScript) zum Öffnen des Anhangs. Diese öffnet und instanziert Word als OLE-Objekt. Die Datei wird in einen speziellen Pfad (Lokale Einstellungen im UserProfile) entpackt, in Word geöffnet und gleichzeitig ebenfalls als OLE-Objekt verknüpft. In den CustomProperties des Word-Dokuments kann man sich dann mit der Methode Add beliebig austoben, um z.B. DB-Eigenschaften aus Notes bzw. die DocUNID festzuhalten.

Danke für den Hinweis! Die CustomProperties von Excel nutzen wir schon.
Wenn ich den Vorschlag richtig verstehe müsste hier aber jede Notes-DB einzeln um den OLE-Aufruf modifiziert werden, oder?

Lars

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: Doclink eines Excel-Anhangs in Excel ermitteln
« Antwort #14 am: 03.11.11 - 10:53:49 »
Danke für den Hinweis! Die CustomProperties von Excel nutzen wir schon.
Wenn ich den Vorschlag richtig verstehe müsste hier aber jede Notes-DB einzeln um den OLE-Aufruf modifiziert werden, oder?

Nein, das kann man ja zentral von einer DB aus machen und auf die anderen DBs zugreifen, um die Anhänge wunschgemäß zu bearbeiten. An die CustomDocumentProperties werden dann die Eigenschaften der jeweiligen DB / Dokumente übergeben.
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

Offline lawern

  • Frischling
  • *
  • Beiträge: 7
Re: Doclink eines Excel-Anhangs in Excel ermitteln
« Antwort #15 am: 03.11.11 - 12:07:56 »
ein erster Versuch zeigte aber, dass beim Anklicken eines Attachments ein GETOBJECT_RQST abgesetzt wird, aber keine weiteren Infos darin enthalten sind.  :-:

Wenn ich in der Notes.ini folgendes setze

    CLIENT_CLOCK=1
    DEBUG_CONSOLE=1

bekomme ich im Log, wenn ich das Dokument zum bearbeiten öffne, ein OPEN_NOTE aus dem ich zumindestens schonmal die DB auslesen kann.
Aber das ist natürlich ziemlich unsicher, wenn zeitgleich z.B. eine Replizierung läuft.

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Doclink eines Excel-Anhangs in Excel ermitteln
« Antwort #16 am: 03.11.11 - 12:50:50 »
ja, das wird nichts, wenn ich 5 Dokumente in mehreren Tabs öffne und dann die Tabs wechsle, kannst du nicht mehr feststellen, aus welcher Note das Attachment kommt und GETOBJECT_RQST liefert leider keine weiteren Infos.

Du könntest zwar alle offenen notes durchsuchen und schauen, ob darin ein Anhang mit der selben Größe/Dateiname etc. enthalten ist.
(Das Logfile kann man mit einem INI-Parameter auch wegschreiben) Ist aber alles sehr unsauber und inperformat.

Ich würde da schon eher die Anwendung anpassen, z.B. eine Teilmaske, welche im Postopen mit evaluate("@attachmentNames",source.document) die enthaltenen Anhänge + UNID wegschreibt (auch noch unsauber) oder der Vorschlag von marschul mal versuchen.
Du wirst aber auch hier einen eigenen Code benötigen, der die die Attachments startet. Das Problem ist, das beim Anklicken/Öffnen eines Attachments kein LS-Event o.ä. abgesetzt wird.

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz