Domino 9 und frühere Versionen > Entwicklung
Eingebettes Objekt als Attachment mailen
DrNotes:
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.
Lossa:
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.
DrNotes:
--- Zitat von: DrNotes am 08.11.05 - 15:37:43 ---Hallo Leute,
ich kämpfe mit folgendem Spezialproblem:
...........
--- Ende Zitat ---
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?
DrNotes:
--- Zitat von: DrNotes am 09.11.05 - 20:28:53 ---
--- Zitat von: DrNotes am 08.11.05 - 15:37:43 ---Hallo Leute,
ich kämpfe mit folgendem Spezialproblem:
...........
--- Ende Zitat ---
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?
--- Ende Zitat ---
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.
flaite:
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
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln