Domino 9 und frühere Versionen > ND8: Entwicklung

Office Version bei einem EmbeddedObject feststellen

(1/2) > >>

Christian Weiß:
Ich habe folgendes Problem:
In einem nicht sichtbaren Richtextfeld befindet sich ein OLE-Objekt.
Mit Lotusscript wird dieses extrahiert und erhält einen eindeutigen Namen und auch eine Dateierweiterung. Anschließend wird die Datei dann in der jeweiligen Anwendung geöffnet (Excel, Powerpoint oder Visio) und kann dann weiter bearbeitet werden.
Bei Office 2003 gab es da auch keine Probleme, nur bei Office 2007 und höher gibt es jetzt ein Problem, da die Dateierweiterung hier 4-stellig ist.

Gibt es eine Möglichkeit mit Lotussscript bei einem EmbeddedObject festzustellen, mit welcher Officeversion die Datei erstellt wurde?
Noch besser wäre es natürlich, wenn man irgendwie die Dateierweiterung herausfinden könnte.
Habt ihr vielleicht Ideen? Jeder Tipp wird dankend angenommen.

Axel:

--- Zitat von: Christian Weiß am 03.06.11 - 15:15:13 ---Gibt es eine Möglichkeit mit Lotussscript bei einem EmbeddedObject festzustellen, mit welcher Officeversion die Datei erstellt wurde?

--- Ende Zitat ---

Wenn in den Office-Dateien bei den Datei-Eigenschaften die Version mitgeführt wird, dann sollte man die über die COM-Schnittstelle auch ermitteln können. 



--- Zitat von: Christian Weiß am 03.06.11 - 15:15:13 ---Noch besser wäre es natürlich, wenn man irgendwie die Dateierweiterung herausfinden könnte.
Habt ihr vielleicht Ideen? Jeder Tipp wird dankend angenommen.

--- Ende Zitat ---

Das dürfte eigentlich kein Problem sein. An den Namen des Anhangs kommst du über die Eigenschaft Source des NotesEmbeddedObject dran.


--- Code: ---...
Set rtitem = doc.GetFirstItem("Name-des_RTF")   
If rtitem.Type = RICHTEXT Then
  Forall objects In rtitem.EmbeddedObjects
     If objects.Type = EMBED_ATTACHMENT Then
           MsgBox objects.Source
     End If  'If objects.Type = EMBED_ATTACHMENT
  End Forall  'Forall objects In rtitem.EmbeddedObjects
End If  'If rtitem.Type = RICHTEXT
...

--- Ende Code ---


In der Designer-Hilfe findest du mehr Infos dazu.

Axel

Christian Weiß:
Hallo Axel,

vielen Dank für Deine Antwort.
Leider ist das Problem ein wenig kniffliger, da das Embedded Object nicht vom Typ EMBED_ATTACHMENT ist, sondern vom Typ EMBED_OBJECT.

Ich habe aber gesehen, dass man möglicherweise mit der 'class' Eigenschaft des Embedded Object arbeiten kann. Dort steht dann zum Beispiel Excel.Sheet.8 (Excel 2003).
Bei Office 2007 und höher müsste da dann Excel.Sheet.12 stehen, obwohl ich dies nur gesehen habe als ich ein Embedded Object einmal direkt über das Notes Menü in ein Richtextfeld eingebunden habe.

Für weitere Tipps wäre ich dankbar.

pram:
Hallo Christian, ich hab noch 2 Tipps falls du mit rtItem.embeddedObjects nicht zum Ziel kommst

Tipp 1: evaluate("@Attachmentnames",doc)
(wird aber wohl nicht gehen, da es ein EMBED_OBJECT ist)

Tipp 2: Das Dokument per DXL-Exporter exportieren und im Export-Stream nach der Dateiendung suchen.
Da steht die mit ziemlicher Sicherheit drin, wenngleich dieser Weg auch langsam und kompliziert ist. (schneller aber noch komplizierter würde es mit der C-API gehen ;) )

Hinweis: Ab Version 8.x kann man den Exporter steuern, dass er nur bestimmte Felder exportiert und die eigentlichen Binärdaten des Attachments weglässt, dann bläht es den Stream nicht so auf.

Gruß
Roland

Christian Weiß:
Hallo Roland,

auch Dir Danke für Deine Hilfe.
Tipp 1 kann ich schon umsetzen. Es ist nämlich so, dass die Exceldatei in einem anderem Dokument (Vorlage) als Attachment gespeichert wurde. Die Datei wird dann als EMBEDDED_OBJECT in andere Dokumente eingebunden.
Ich habe es jetzt also so gemacht, dass ich mir die Dateierweiterung aus der Vorlage hole und dann in einem neuen Feld des Dokuments speichere.

Habt ihr noch Ideen wie ich feststellen kann, ob ein Office-Dokument Makros beinhaltet?

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln