Discussion:
Aus einer VB6-Anwendung eine Graphik einfügen
(zu alt für eine Antwort)
Lothar Geyer
2013-05-23 15:24:45 UTC
Permalink
In ein Dokument soll von einer VB6-Anwendung eine Graphik eingefügt
werden, die als png-Datei vorliegt. In der Dokument-Vorlage, die
ansonsten vom Anwender frei definiert werden können soll, soll vom
Anwender eine Markierung (ähnlich einer Textmarke für einen Text)
eingefügt werden, über die die Position und Größe des einzufügenden
Graphik definiert werden kann.

Welche Art Markierung ist dafür am Besten geeignet? Und wie bekomme ich
Position bzw. die Abmessungen, damit die Graphik ggfls. von der
VB6-Anwendung noch skaliert werden kann?

Lothar Geyer
Bernhard Sander
2013-05-23 19:19:50 UTC
Permalink
Hallo Lothar,
In ein Dokument soll von einer VB6-Anwendung eine Graphik eingefügt werden, die
als png-Datei vorliegt. In der Dokument-Vorlage, die ansonsten vom Anwender frei
definiert werden können soll, soll vom Anwender eine Markierung (ähnlich einer
Textmarke für einen Text) eingefügt werden, über die die Position und Größe des
einzufügenden Graphik definiert werden kann.
Welche Art Markierung ist dafür am Besten geeignet? Und wie bekomme ich Position
bzw. die Abmessungen, damit die Graphik ggfls. von der VB6-Anwendung noch
skaliert werden kann?
ich geh mal von Word 2010 aus. Das Vorgehen sollte aber auch in anderen
Word-Versionen funktionieren.

Der Anwender kann z.B. ein Rechteck der gewünschten Größe an beliebiger Stelle
einfügen. Er muss nur drauf achten, dass das Rechteck nicht mit "Text in Zeile"
formatiert ist. Dann muss er in der Übersicht "Auswahl und Sichtbarkeit" diesem
Rechteck einen festgelegten Namen geben. Die Übersicht erreicht er über das
Ribbon "Seitenlayout" in der Gruppe "Anordnen" mit dem Knopf "Auswahlbereich".

In VB kannst Du nun über ActiveDocument.Shapes("festgelegter Name") auf das
Rechteck zugreifen und von dort Lage und Größe abgreifen. Mit diesen Maßen fügst
Du nun die Grafik ein und löschst das Rechteck. Dann kannst Du noch der Grafik
den gleichen Namen wieder geben für weitere Zugriffe.

Eine andere Möglichkeit wäre, einen Positionsrahmen oder ein Textfeld einzufügen
und mit einer Textmarke zu versehen. Über die Textmarke kann VB das Element
finden und die Grafik einsetzen. Meist nimmt die Grafik dann die Größe des
Positionsrahmens/des Textfeldes an.

Viele Grüße
Bernhard Sander
Rainer H. Rauschenberg
2013-05-27 08:51:38 UTC
Permalink
Post by Bernhard Sander
Der Anwender kann z.B. ein Rechteck der gewünschten Größe an
beliebiger Stelle einfügen. Er muss nur drauf achten, dass das
Rechteck nicht mit "Text in Zeile" formatiert ist.
In VB kannst Du nun über ActiveDocument.Shapes("festgelegter Name") auf das
Bei mit "Text in Zeile" sollte analog
ActiveDocument.InlineShapes("festgelegter Name") funktionieren.
Lothar Geyer
2013-05-28 15:05:46 UTC
Permalink
Hallo Bernhard,

zunächst sorry für die späte Rückmeldung. Aber es kommt halt immer was
dazwischen.
Post by Bernhard Sander
...
ich geh mal von Word 2010 aus. Das Vorgehen sollte aber auch in anderen
Word-Versionen funktionieren.
In diesem Fall ist noch Office 2003 SP3 gefordert.
Post by Bernhard Sander
Der Anwender kann z.B. ein Rechteck der gewünschten Größe an beliebiger
Stelle einfügen. Er muss nur drauf achten, dass das Rechteck nicht mit
"Text in Zeile" formatiert ist. Dann muss er in der Übersicht "Auswahl
und Sichtbarkeit" diesem Rechteck einen festgelegten Namen geben. Die
Übersicht erreicht er über das Ribbon "Seitenlayout" in der Gruppe
"Anordnen" mit dem Knopf "Auswahlbereich".
Einen entsprechenden Menüpunkt kann ich leider nicht finden. Das ist ja
das eigentliche Problem, dass ich von VB6 aus nicht weiß, wo ich
"hinlangen" muss.
Post by Bernhard Sander
In VB kannst Du nun über ActiveDocument.Shapes("festgelegter Name") auf
das Rechteck zugreifen und von dort Lage und Größe abgreifen. Mit diesen
Maßen fügst Du nun die Grafik ein und löschst das Rechteck. Dann kannst
Du noch der Grafik den gleichen Namen wieder geben für weitere Zugriffe.
Soweit klar.
Den Namen brauche ich später nicht mehr. Warum sollte ich das tun?
Eigentlich wird das Dokument danach nur ausgedruckt, meist gar nicht
gespeichert. In vielen Fällen soll das Erstellen des Dokuments im
Hintergrund erfolgen (also mit MSWord .Visible=false).
Post by Bernhard Sander
Eine andere Möglichkeit wäre, einen Positionsrahmen oder ein Textfeld
einzufügen und mit einer Textmarke zu versehen. Über die Textmarke kann
VB das Element finden und die Grafik einsetzen. Meist nimmt die Grafik
dann die Größe des Positionsrahmens/des Textfeldes an.
Was heißt "meist"?
Aber ich glaube, das ist mir der erste Weg lieber. Dann weiß ich beim
Erstellen der Graphik schon die Größe und kann sie besser skalieren.

Lothar Geyer
Bernhard Sander
2013-05-29 10:19:28 UTC
Permalink
Hallo Lothar,
Post by Lothar Geyer
Post by Bernhard Sander
ich geh mal von Word 2010 aus. Das Vorgehen sollte aber auch in anderen
Word-Versionen funktionieren.
In diesem Fall ist noch Office 2003 SP3 gefordert.
Post by Bernhard Sander
...
Einen entsprechenden Menüpunkt kann ich leider nicht finden. Das ist ja das
eigentliche Problem, dass ich von VB6 aus nicht weiß, wo ich "hinlangen" muss.
Hab ich dort leider auch nicht gefunden.

So würde es wohl klappen:

Füge ins Dokument ein Recheck ein. Sorge dafür, dass es nicht als "Mit Text in
Zeile" formatiert ist. Markiere das Rechteck und gib im eine Textmarke (hier:
test) mit. Nun kannst Du auf das Rechteck mit VBA so zugreifen:

Set x = ActiveDocument.Bookmarks("test").Range.ShapeRange
y = x(1).Name
Set z = ActiveDocument.Shapes(y)

Gruß
Bernhard Sander

Loading...