Autor Thema: Eingebettes Objekt als Attachment mailen  (Gelesen 3525 mal)

Offline DrNotes

  • Aktives Mitglied
  • ***
  • Beiträge: 183
  • Geschlecht: Männlich
Eingebettes Objekt als Attachment mailen
« am: 08.11.05 - 15:37:43 »
Hallo Leute,

ich kämpfe mit folgendem Spezialproblem:

Ich verwende in meiner Datenbank Dokumente mit eingebetten Objekten, wie etwa eine Projekt-Kalkulation (Excel-Sheet), eine Bestellung (Word-Dokument), etc.

Nun mein Problem:
Einige Mitarbeiter unserer Firma vertreten die Meinung, dass dieses Funktionalität nur Sinn macht, wenn man diese Dokumente auch mailen kann.
Wenn ich jetzt die Funktion "In neues Memo kopieren" verwende, hábe ich das Problem, dass der Empfänger das eingebette Objekt nicht lösen kann (wie beim Attachment).

Daher meine Überlegung:
Ich bräuchte eine Routine, die  mir das eingebettet Objekt löst (z.B: nach C:\Temp) und dann dieses Attchment in mein Memo als Attachment anhängt.

Geht das irgendwie bzw. hat jemand eine Lösung für dieses Problem parad?

Wäre für eventuelle Antworten sehr dankbar.

Offline Lossa

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.404
  • Geschlecht: Männlich
    • alphaTrain
Re: Eingebettes Objekt als Attachment mailen
« Antwort #1 am: 09.11.05 - 08:19:18 »
Hi,

du must ein Scriplt schreiben, das beim Forward das OLE Object startet, und dann mittels der entsprechende OLE-Befehle des Objectes dieses speichert, das OLE schliesst und den Anhang in eine Mail einbindet.

BTW: Warum machst du dass ganze denn überhaupt mit OLE, spätestens wenn ihr ein Update der aktuelle Software macht, oder aber vieleicht irgendwann einmal den Hersteller wechselt, dann sind alle OLE Objekte unnutzbar. Frei nach dem Motto: "Mit Anhängen wär das jetzt nicht passiert". Mal drüber nachdenken.
Viele Grüße

Ulrich Lossa
Aktiv als Notes Admin und Entwickler seit Version 1.
Freier Trainer und Berater.
Zertifiziert für alle Versionen SA und DB.
HCL Certified Administrator
IBM Certified Advanced Application Developer (PCLP AD)
IBM Certified Advanced System Administrator (PCLP SA)
IBM Certified Instructor for System Administration and Application Development ( CLI)
IBM Certified Instructor for Websphere Software
IBM Certified Instructor for DB2
http://www.alphatrain.de
Lossa@alphatrain.de

Offline DrNotes

  • Aktives Mitglied
  • ***
  • Beiträge: 183
  • Geschlecht: Männlich
Re: Eingebettes Objekt als Attachment mailen
« Antwort #2 am: 09.11.05 - 20:28:53 »
Hallo Leute,

ich kämpfe mit folgendem Spezialproblem:
...........

So, mein obiges Problem hab ich gelöst......


strPathFile =  strV & o.Source & strExtension
Set handle = o.Activate( False)   
handle.SaveAs(strPathFile)               
Call o.remove()   
Dim object As NotesEmbeddedObject
Set object = rtitemNew.EmbedObject(EMBED_ATTACHMENT, strClass, strPathFile)   
Kill strPathFile   

...allerdings gibt's einen Wermutstropfen:

Wenn ich das mit z.B. einem Word-Dokument teste, bleibt anschliessend der Word-Task im Hintergrund bestehen.
Ich habe schon etliche "Kill-Varianten" getestet, leider ohne Erfolg, wie etwa:
handle.Quit(False)
Set handle = Nothing
........................

Hat vielleicht jemand eine Idee, wie ich diesen Hintergrund-Task wieder los werde?

Offline DrNotes

  • Aktives Mitglied
  • ***
  • Beiträge: 183
  • Geschlecht: Männlich
Re: Eingebettes Objekt als Attachment mailen
« Antwort #3 am: 12.11.05 - 22:06:53 »
Hallo Leute,

ich kämpfe mit folgendem Spezialproblem:
...........

So, mein obiges Problem hab ich gelöst......


strPathFile =  strV & o.Source & strExtension
Set handle = o.Activate( False)   
handle.SaveAs(strPathFile)               
Call o.remove()   
Dim object As NotesEmbeddedObject
Set object = rtitemNew.EmbedObject(EMBED_ATTACHMENT, strClass, strPathFile)   
Kill strPathFile   

...allerdings gibt's einen Wermutstropfen:

Wenn ich das mit z.B. einem Word-Dokument teste, bleibt anschliessend der Word-Task im Hintergrund bestehen.
Ich habe schon etliche "Kill-Varianten" getestet, leider ohne Erfolg, wie etwa:
handle.Quit(False)
Set handle = Nothing
........................

Hat vielleicht jemand eine Idee, wie ich diesen Hintergrund-Task wieder los werde?

Hallo Leute,

ich verzweifle langsam mit meinem Problem:
*) Word: das hier der Hintergrund-Task weiterläuft stört mich derzeit ja nicht einmal so sehr, aber
*) beim Excel konvertiert er zwar brav das eingebettet Objekt in ein Attachment, allerdings muss
    ich beim Öffnen desselben dann im Excel-Menü "Fenster" -> "Einblenden" klicken, damit ich die Excel-Tabelle sehe.
    Eigenartigerweise scheint das Excel den Activate(False)-Befehl als "Fenster" -> "Ausblenden" zu interpretieren.
*) im WordPro, Powerpoint, Ms-Project funktioiniert alles wunderbar.


So, jetzt versuche ich meine Lösung über eine zweite Idee:
1) Ich ermittle zuerst den Applikation-Typ des eingebetten Objekts (Word, Excel)
2) starte die Applikation im Hintergrund und
3) lege dann das eingebette Objekt zum Abspeichern in die jeweilige Applikation (ich verzichte also auf die Activate-Fkt.)

Woran ich scheitere, wie ich der Methode "GetEmbeddedObject (Name)" den "Namen" zuweisen kann. ???

Konkretes Beispiel:
Ich habe in meinem Dokument ein eingebettes Excel, das den Notes-Internen-Namen "EXT23694"
hat, wenn ich jetzt aber die Zuweisung mache,
Set neo =rtitem.getembeddedObject("EXT23694")
ist neo nach wie vor leer - ich kapiers einfach nicht.

Also meine Idee schaut ca. so aus:

Dim neo As NotesEmbeddedObject

Forall o In rtitemSource.EmbeddedObjects      (o.Source zeigt "EXT23694" an!!!)
Select Case o.Type
   Case EMBED_OBJECT:               
   strClass = o.Class                    
   Case "Excel.Sheet.8"

                Set neo =rtitem.getembeddedObject("EXT23694")
                Set excelappobject = neo.object
                excelappobject.visible = False
                Set excelworksheetobject = excelAppObject.activesheet
                excelAppObject.Activeworkbook.SaveAs "c:\temp\"EXT23694.xls"
                excelAppObject.Activeworkbook.close



Mit dieser Version hoffe ich, dass
1) Word im Hintergrund wieder geschlossen wird
2) das Excel-Sheet beim Öffnen des konvertierten Attachments sichtbar ist.

Danke an alle, die mir einen Tipp geben können.

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Eingebettes Objekt als Attachment mailen
« Antwort #4 am: 13.11.05 - 00:00:55 »
Ich hatte damit nur am Rande zu tun, aber wenn ich mich recht erinnere mußte bei uns jemand mal eine C-Routine schreiben, um aus einem OLE-Objekt die entsprechende Datei zu extrahieren. Ein OLE-Objekt ist nämlich gar nicht "die Datei" sondern eine Dateienstruktur. Sie besteht aus mehreren Files, die zusammengepackt sind ähnlich wie eine jar-Datei in Java.

Gruß Axel
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Eingebettes Objekt als Attachment mailen
« Antwort #5 am: 13.11.05 - 00:15:31 »
"Doktor" Notes, Du beschreibst hier auf jeden Fall ein interessantes und entsprechend Deiner gegenwärtigen Umgebung bereits teilweise gelöstes Problem.

Ich sehe das aber genauso wie Ulrich-Thomas Lossa: Dein Problem ist interessant, aber rein akademisch. Was passiert mit der nächsten Version, die eventuell neue Methoden und Eigenschaften aufweist ? Was ist, wenn ein weiteres Programm berücksichtigt werden muss ?

Eingebettete Objekte sind Momentaufnahmen des Systems. in dem sie gerade herumlungern. Diese per Mail verschicken zu wollen, ist ein zum Scheitern verurteiltes Projekt - zumindest, was Dauerhaftigkeit angeht.

Wenn man später auf längst nicht mehr verwendete Apps zurückgreifen müsste, um die eigentliche Datei zu lösen, gilt genau das, was Axel gerade gepostet hat.

Bernhard

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Eingebettes Objekt als Attachment mailen
« Antwort #6 am: 13.11.05 - 01:51:33 »
Ich hab ziemlich lange in Google gesucht und nichts gefunden. Allerdings bin ich bei diesem ganzen OLE/Com, Microsoft-Zeug leider auch nicht so ein Experte.

Auf einer Ebene kann ich Bernhard nur zustimmen. Wobei diese eingebetteten Objekte natürlich vom Business Standpunkt D.A.T.E.N. sind, also etwas, dass einen gewissen Wert darstellt und was man eventuell wieder aus der Anwendung raus haben und anderweitig weiterverarbeiten will.
Schön. Da gibt es diese netten Applikationen mit den lustig wechselnden Versionsnummern und kübelweise Apis, Apis, Apis. Schöne einfache Apis.
Daten sollten von Anwendungen getrennt sein. Gut das geht vielleicht mit Word-Dokumenten vor Word 2003 (mit xml-Beschreibung der Dokumente) nur mit Problemen. Aber man sollte doch wenigstens die ursprüngliche Datei da wieder rausziehen können.
Wie gesagt: OLE-Objekte sind eine Struktur (sieht ähnlich wie ein Zip-File aus) und da ist die Essenz, die dich interessiert (die Datei) drin. Leider weiss ich momentan nicht wie das geht, aber das sollte der Weg sein.

Hier scheint so ein Teil zu sein, mit dem man sich die OLE-Struktur schon mal anschauen kann.
http://www.codeproject.com/com/Another_OLE_Doc_Viewer.asp
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline DrNotes

  • Aktives Mitglied
  • ***
  • Beiträge: 183
  • Geschlecht: Männlich
Re: Eingebettes Objekt als Attachment mailen
« Antwort #7 am: 13.11.05 - 09:14:02 »
Ich hatte damit nur am Rande zu tun, aber wenn ich mich recht erinnere mußte bei uns jemand mal eine C-Routine schreiben, um aus einem OLE-Objekt die entsprechende Datei zu extrahieren. Ein OLE-Objekt ist nämlich gar nicht "die Datei" sondern eine Dateienstruktur. Sie besteht aus mehreren Files, die zusammengepackt sind ähnlich wie eine jar-Datei in Java.

Gruß Axel
Ich glaub nicht, dass ich hier eine C-Routine brauche?
Warum, 1 (ein) eingebettetes Objekt entspricht genau einer Datei und keiner Dateistruktur?

Mein erster Lösungsansatz funktioniert ja wunderbar mit 1, 2,3.... eingebetteten Objekten.

Nur nochmals kurz zu meiner Ausgangssituation (damit wir alle vom gleichen reden):
*) Ich habe ein Dokument mit einem RT-Feld
*) ich erstelle mir z.B. eine Kalkulation.xls
*) in dieses RT-Feld lege ich mittels "Erstellen" -> "Objekt" -> "Objekt aus Datei" ->"Durchsuchen" -
    > "Kalkulation.xls" das eingebettete Dokument (es könnten im schlimmsten Fall auch meherere sein, oder
    gemischt mit Attachments, macht aber eigentlich keinen Sinn - meine erste Lösung  würde allerdings trotzdem
    funktionieren) und speichere das Dokument
*) wenn ich jetzt das Dokument samt eingebetteter Objekte mailen möchte, habe ich die Möglichkeit
   *a) die Kalkulation.xls mittels "Kopie speichern als unter" auf der Festplatte abzuspeichern und in mein neues
        Memo als Attachment anhängen oder
   *b) ich klicke auf meinen Menüpunkt "Kopieren in neues Memo" und meine erste Lösungsmöglichkeit erledigt das
        vollautomatisch.
*) mittels der "Forall o In rtitemSource.EmbeddedObjects" durchlaufe ich alle Objekte (dabei vergibt Notes einen
    internen Namen für jedes eingebettete Objekt, der anscheinend immer so ausschaut"EXTxxxxx" - wie eben bei
    mir konkret "EXT23694"), speichere sie und hänge sie als Attachment an.

Im Prinzip hätt ich's ja schon fast, aber ich kapier die "GetEmbeddedObject"-Methode nicht.
Warum übernimmt die mir die den Wert von o.Source ("EXT23694") nicht? - Oder gilt die Methode nur für Attachments?
Aber lt. Hilfe sollte sie ja mit einem eingebetten Objekt funktionieren?

Könntet ihr mir da vielleicht noch einmal kurz Nachhilfe geben? (In der Designer-Hilfe zeigen sie das nur mit einem  Attachment namens "Jim").

Bzgl. kommender Versionen mach ich mir d e r z e i t  keine Gedanken, ich brauchs eigentlich nur für Word, Excel, WordPro und MS-Projekt - und das halt jetzt (mit XP und W2k funnktioniert es ja).

Sofern ich irgenwann mal umstelle, muss ich mir halt wieder was anderes überlegen.
« Letzte Änderung: 13.11.05 - 09:58:27 von DrNotes »

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Eingebettes Objekt als Attachment mailen
« Antwort #8 am: 13.11.05 - 17:32:24 »
Möglicherweise gehe ich dir auf die Nerven...
Aber die Tatsache, dass keiner hier für diese Standardfragestellung aus einem eingebetteten OLE-Office-Objekt das File zu extrahieren, kann als Hinweis dafür gewertet werden, dass diese Aufgabenstellung einige Tücken hat.
Ich würds erstmal auf Microsoft Foren versuchen. Vielleicht können die ein paar Hinweise dafür liefern.
Weitere klassische Anlaufstellen sind:
- das Forum auf notes.net
- und für solche weitesgehend rich-Text verbundenen Fragestellungen auch die Webseite von Ben Langhinrich (http://www.geniisoft.com/). Irgendwo ist da auch ein Forum.
- wenn du wirklich nicht mehr weiterweisst, kannst du versuchen mit diesem Mann über den Preis unserer dll-Lösung verhandeln (obuerger AT img DOT de -> das war jetzt wirklich kein Rambo-Style Vertrieb, right? )

Gruß Axel
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline DrNotes

  • Aktives Mitglied
  • ***
  • Beiträge: 183
  • Geschlecht: Männlich
Re: Eingebettes Objekt als Attachment mailen
« Antwort #9 am: 20.11.05 - 13:43:36 »
Hallo Leute,

ich kämpfe mit folgendem Spezialproblem:
...........

So, mein obiges Problem hab ich gelöst......


strPathFile =  strV & o.Source & strExtension
Set handle = o.Activate( False)   
handle.SaveAs(strPathFile)               
Call o.remove()   
Dim object As NotesEmbeddedObject
Set object = rtitemNew.EmbedObject(EMBED_ATTACHMENT, strClass, strPathFile)   
Kill strPathFile   

...allerdings gibt's einen Wermutstropfen:

Wenn ich das mit z.B. einem Word-Dokument teste, bleibt anschliessend der Word-Task im Hintergrund bestehen.
Ich habe schon etliche "Kill-Varianten" getestet, leider ohne Erfolg, wie etwa:
handle.Quit(False)
Set handle = Nothing
........................

Hat vielleicht jemand eine Idee, wie ich diesen Hintergrund-Task wieder los werde?

Hallo Notes-Gemeinde,

für alle die es interessiert oder ein ähnliches Problem haben:

Ich habe obige Routine verwendet mit dem einzigen Unterschied, dass ich bei Activate das True verwende, also
Set handle = o.Activate( true)

Das ganze funktioniert jetzt wunderbar, und es gibt keine Probleme mit dem
* Word-Hintergrund-Task bzw.
* mit dem versteckten Excel-Sheet.

Meine Mitarbeiter sind mit dieser Lösung sehr zufrieden, insofern bin ich es auch.

LG

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz