Autor Thema: Office Version bei einem EmbeddedObject feststellen  (Gelesen 2569 mal)

Offline Christian Weiß

  • Junior Mitglied
  • **
  • Beiträge: 61
  • Geschlecht: Männlich
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.
Gruß

Christian

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Office Version bei einem EmbeddedObject feststellen
« Antwort #1 am: 03.06.11 - 18:01:47 »
Gibt es eine Möglichkeit mit Lotussscript bei einem EmbeddedObject festzustellen, mit welcher Officeversion die Datei erstellt wurde?

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. 


Noch besser wäre es natürlich, wenn man irgendwie die Dateierweiterung herausfinden könnte.
Habt ihr vielleicht Ideen? Jeder Tipp wird dankend angenommen.

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 
...


In der Designer-Hilfe findest du mehr Infos dazu.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Christian Weiß

  • Junior Mitglied
  • **
  • Beiträge: 61
  • Geschlecht: Männlich
Re: Office Version bei einem EmbeddedObject feststellen
« Antwort #2 am: 04.06.11 - 13:48:48 »
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.
Gruß

Christian

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Office Version bei einem EmbeddedObject feststellen
« Antwort #3 am: 04.06.11 - 16:19:19 »
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
Roland Praml

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

Offline Christian Weiß

  • Junior Mitglied
  • **
  • Beiträge: 61
  • Geschlecht: Männlich
Re: Office Version bei einem EmbeddedObject feststellen
« Antwort #4 am: 06.06.11 - 16:42:49 »
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?
Gruß

Christian

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Office Version bei einem EmbeddedObject feststellen
« Antwort #5 am: 06.06.11 - 20:33:41 »
Habt ihr noch Ideen wie ich feststellen kann, ob ein Office-Dokument Makros beinhaltet?

Der Mann hat Wünsche ...

Mögl. 1. Das Dokument mit COM öffnen und schauen welche Macros drin sind.
Als Denkanstoß poste ich mal das: http://support.microsoft.com/kb/177760
(Erfordert aber dass auf der Maschine Excel installiert ist)

Mögl. 2. Direkt in der Datei nachsehen, einige Excel-Formate sind hier definiert. http://www.wotsit.org/
(XLSX ist soweit ich weiß ein ZIP-Archiv mit XML-Dateien.)

Gruß
Roland

Roland Praml

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

Offline Christian Weiß

  • Junior Mitglied
  • **
  • Beiträge: 61
  • Geschlecht: Männlich
Re: Office Version bei einem EmbeddedObject feststellen
« Antwort #6 am: 07.06.11 - 11:24:50 »
Hallo Roland,

ich dachte das es da vielleicht einen Visual-Basic Befehl gibt, mit dem man dies abfragen könnte?
Gruß

Christian

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: Office Version bei einem EmbeddedObject feststellen
« Antwort #7 am: 07.06.11 - 12:27:06 »
kurzer Blick in die Hilfe zu VBA (in dem Fall Excel). Das hier könnte klappen:

ActiveWorkbook.Application.Version

(habs aber nicht getestet).


hth

Thomas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz