WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   An die VB Gurus (http://www.wcm.at/forum/showthread.php?t=78432)

käptn 26.11.2002 17:07

An die VB Gurus
 
Hi, ist vielleicht eine blöde Frage, aber trotzdem:

Mit welcher Methode welchen Objektes erhalte ich die Binärdaten eines in einem Word Dokument eingebetten Bildes? :D

Mir würde es auch reichen wenn ich irgendwie auf die Zwischenablage zugreifen könnte, nachdem ich das Bild mit Copy() dorthin befördert habe.

Ich hab bis jetzt noch nichts gefunden mit dem ich die Bilddaten erhalte. Text ist ja kein Problem... :confused:

TIA

~

Seidl 26.11.2002 20:51

Ich glaube nicht, dass das in VBA überhaupt möglich ist. Zumindest ist mir nichts dahingehendes bekannt.
In VB kannst du aus dem Clipboard-Object mit GetData() ein IPicture-Object auslesen aber ich weiss nicht ob du damit schon was anfangen kannst.
Was hast du denn grundsätzlich mit dem Bild vor?

käptn 26.11.2002 21:07

*freu*

Erstmal danke für die Antwort.

Gibt's Clipboard.GetData() auch in VBA (Word)? Hab nämlich nichts gefunden!


Zur Situation:

Ich will mit PHP über COM ein Word-File parsen, und natürlich auch die Bilder und nicht nur den Text extrahieren.

Die entsprechenden Anweisungen erfolgen in PHP komplementär zu VB nur anstatt den Punkten . kommt -> - also falls du irgendwas rausfindest würden mir ein paar Code-Zeilen sicher auch weiterhelfen.

~

Seidl 26.11.2002 21:41

Leider lässt sich meines Wissens das ganze Clipboard-Object nur unter VB direkt ansprechen. Unter VBA gibt's nur indirektes Copy und Paste.
Aber auch wenn du mit VB arbeitest ist wahrscheinlich nur über API weiterzukommen (falls überhaupt).
Sorry :(

käptn 27.11.2002 08:41

Wie lautet denn das Objekt für die Zwischenablage o.ä.?

Word ist "Word.Application"...

~

Seidl 27.11.2002 13:53

Nomen est omen ;)

Das Clipboard-Object heisst unter VB "Clipboard".
Unter VBA gibt es das Objekt (soweit ich weiss) gar nicht.

Vielleicht hilft dir dieser Link zu einem Sample auf der MSDN-Homepage weiter:

http://msdn.microsoft.com/library/de...eClipboard.asp

käptn 27.11.2002 21:15

Na leider net... :(

Ich find keine passende ProgID zu Clipboard in der Registry...

~

Seidl 27.11.2002 22:19

Da haben wir uns leider mißverstanden.
Wenn ich mit VB programmiere, dann habe ich Zugriff auf ein VB internes Objekt "Clipboard". Das stellt gewissermassen nur ein Frontend für die eigentlichen Windows-Funktionen im Hintergrund dar die nötig sind um damit zu arbeiten. Das Clipboard selbst ist direkt in Windows implementiert und kein eigenständiges Programm (wenn ich mich nicht komplett täusche).
Deswegen habe ich auch gemeint, dass du um API-Aufrufe nicht herumkommen wirst.
Wahrscheinlich lässt sich die Sache mit C++ weit besser abhandeln. VB ist eben wirklich eine sehr hohe und hardware-ferne Programmiersprache ohne eigentlichen Bezug zu alledem das im Hintergrund vorhanden sein muss damit z.B. ein Bild angezeigt wird.

käptn 27.11.2002 22:30

Ehrlich gesagt - keine Ahnung...

I glaub i gib's auf...

Irgendwie muss doch das Clipboard über COM zu instantiieren sein... Ich will ja nur die paar Bytes, die im Clipboard gespeichert sind...

:heul:

Vielleicht eine dreiste Frage, aber könntest mir den Code für eine dll posten, die als einzige Funktion Clipboard.GetData() enthält? Geht das überhaupt?

~

Sesa_Mina 27.11.2002 22:33

word dokument als RTF (Rich Text Format) abspeichern.

Dann kannst ganz einfach den Text sowie die grafiken auslesen weil das rtf format ja so was ähnliches wie html is. mit tags und begrenzern und so.

lasst sich auch wonderbra in eine richtext box einlesen und dann hast a eigenschaft .text fürn text und rtftext für den text+bilder mit rich tect formatierungen drin.

Seidl 27.11.2002 22:39

Ich könnte dir schon so eine DLL schreiben aber was würdest du damit anfangen? Ist ja nur ein Handle auf einen Speicherbereich.

So ich mach jetzt Feierabend.
Bis morgen.

käptn 27.11.2002 23:24

@Sesa_Mina

Hast recht. RTF wär eigentlich die Möglichkeit - das würd' dann auch auf Linux funktionieren - mal angenommen ich bring einen gscheiten Wrapper zusammen. Hab schon versucht ein DOC auf Binärebene auszulesen, aber da sind nur Referenzen der Bilder im Text (wie auch beim derzeitigen Versuch über COM mit Document->Range->Text). Bei den RTFs wären wenigstens die Binärdaten der Bilder an der Stelle wo sie hingehören - jedenfalls auf den ersten Blick.

@Seidl
Naja, AFAIK könnte ich die DLL laden und dann die Funktion aufrufen. Rückgabewert sollten dann halt die Binärdaten des Bildes sein, welches vorher mit Document->Selection->Copy() in die Zwischenablage befördert wurde.

~

Seidl 28.11.2002 08:29

Ich bin zwar nicht besonders optimistisch, dass die Sache so einfach klappen wird aber ich werde versuchen mir die Sache am Abend anzusehen.
Allerdings kann ich noch nicht versprechen, dass es sich zeitmässig ausgehen wird. Ich habe heute noch einen Auftrag abzuschliessen der morgen fertig sein muss und zusätzlich hat mein Boiler heute morgen den Geist ausgehaucht. :heul: :heul: :heul:

käptn 28.11.2002 09:51

Zitat:

Original geschrieben von Seidl
zusätzlich hat mein Boiler heute morgen den Geist ausgehaucht. :heul: :heul: :heul:
Sorry...
Ich bin aber für jede Hilfe dankbar, schau mir halt was ich mit dem Vorschlag von Sesa_Mina anfangen kann...

~

Seidl 30.11.2002 22:00

Das mit der DLL funktioniert leider nicht ganz so wie ich mir das vorgestellt habe.:(
Wenn du wirklich entschlossen bist die Sache mit Word durchzuziehen solltest du wahrscheinlich wirklich direkt das Windows-API verwenden. Zum Glück gibt's im Web ja mittlerweile eine Dokumentation dazu.
Viel Spass :D

NasenBär 01.12.2002 09:02

hy!

vielleicht hilft dir dieser link!
http://www.activevb.de/tipps/vb6tipps/tipp0204.html
leider habe ich nicht die zeit um weitere zu suchen!
falls du noch weitere suchst, verwende die suchfunktion der vorigen seite (mit stichwort zwischenablage oder ähnlichem)!
http://www.activevb.de/cgi-bin/suche/search.pl

mfg


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag