Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bild per VBA auf Seite 3 einfügen

608 views
Skip to first unread message

Karl Huber

unread,
Aug 4, 2004, 9:08:57 AM8/4/04
to
Hallo,

ich habe es zwar mittlerweile hinbekommen, per VBA ein
Bild in ein Worddokument einzufügen (Greife per VB auf das
Word-Objekt zu)
ActiveDocument.Shapes.AddPicture FileName:="c:\auge.jpg",
LinkToFile:=False, SaveWithDocument:=True
und kann dann die Position per
ActiveDocument.Shapes(Number).ZOrder msoBringInFrontOfText
ActiveDocument.Shapes(Number).Left = CentimetersToPoints
(8)
ActiveDocument.Shapes(Number).Top = CentimetersToPoints(8)
verschieben...

Aber wie bekomme ich ein Bild auf eine bereits vorhandene
Seite 3 oder in eine Tabelle?

Wer kann mir da weiter helfen?

cu

Karl

Thomas Gahler

unread,
Aug 4, 2004, 10:28:56 AM8/4/04
to
Hallo Karl

> ActiveDocument.Shapes.AddPicture FileName:="c:\auge.jpg",

> ActiveDocument.Shapes(Number).ZOrder msoBringInFrontOfText
Verwende unbedingt ein Objekt um dein Shape anzusprechen. Ist besser als mit
der Aufzählung zu arbeiten.

> Aber wie bekomme ich ein Bild auf eine bereits vorhandene
> Seite 3 oder in eine Tabelle?

Die '.AddPicture'-Methode kennt den 'Anchor'-Parameter. Da gibst du einen
Range an wo das Bild stehen soll. Anschliessend sollte es noch positioniert
werden.

Ein Codeschnippsel von mir (nicht lauffähig in dieser Form, aber als
Gedankestütze)


Set rLogo = ActiveDocument.Shapes.AddPicture _
(FileName:=vDummy, _
Anchor:=rKopfzeile, _
LinkToFile:=False, _
SaveWithDocument:=True)

With rLogo
.Name = "Logo"
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
.LockAspectRatio = True
.LockAnchor = True
.Left = CentimetersToPoints(1)
.Top = CentimetersToPoints(5)
.Width = CentimetersToPoints(3.5)

Mit dem Objekt 'rLogo' kannst du das richtige Shape ansprechen. Durch
vergabe eines Namens, kasst du den Shape auch später gezielt wieder
ansprechen.


--
Thomas Gahler
MVP für WordVBA

- Windows XP, Office XP (SP2)


Karl Huber

unread,
Aug 4, 2004, 10:53:36 AM8/4/04
to

>-----Originalnachricht-----

Hm...

Habs mittlerweile geschafft die Position einer Textmarke,
die sich auf Seite 3 befindet auszulesen und das Bild auf
diesen Koordinaten zu positionieren. Allerdings leider
nicht auf Seite 3 sondern auf Seite 1 auf diesen
Koordinaten...

Wie krieg ich das Bild auf Seite 3

With Word.Selection.GoTo(what:=wdGoToBookmark,
Name:="Bild1")
oGrafikX = .Information
(wdHorizontalPositionRelativeToTextBoundary)
oGrafikY = .Information
(wdVerticalPositionRelativeToTextBoundary)
End With

With ActiveDocument.Shapes.AddPicture("c:\auge.jpg", True,
False, , , Width:=173, Height:=162)
.ZOrder msoBringForward
.Name = "OKarte"


.RelativeHorizontalPosition =
wdRelativeHorizontalPositionPage
.RelativeVerticalPosition =

wdRelativeVerticalPositionParagraph
.IncrementLeft oGrafikX
.IncrementTop oGrafikY + 550
End With

Mit den Begriffen Anchor und Range kann ich jetzt nicht
wirklich was anfangen? Kannst du mir das genauer erklären?

Thomas Gahler

unread,
Aug 5, 2004, 1:55:48 AM8/5/04
to
Hallo Karl


> Wie krieg ich das Bild auf Seite 3

Zum Beispiel so

Sub Demo()
Dim oRNG As Range
Dim oSHP As Shape

If ActiveDocument.Bookmarks.Exists("Bild") Then
Set oRNG = ActiveDocument.Bookmarks("Bild").Range

Set oSHP = ActiveDocument.Shapes.AddPicture _
(FileName:="C:\Temp\Rot.Bmp", _
Anchor:=oRNG, _


LinkToFile:=False, _
SaveWithDocument:=True)

With oSHP


.Name = "Logo"
.RelativeHorizontalPosition =

wdRelativeHorizontalPositionCharacter
.RelativeVerticalPosition = wdRelativeVerticalPositionLine


.LockAspectRatio = True
.LockAnchor = True

.Left = CentimetersToPoints(0)
.Top = CentimetersToPoints(0)
.Width = CentimetersToPoints(3.5)
End With
End If
End Sub

> With Word.Selection.GoTo(what:=wdGoToBookmark,
Wenn du Word via VB fernsteuern willst, dann kannich dir nur zwei Sachen
raten, damit du nicht bald Sorgen bekommst
- Arbeite nicht mit dem '.Selction'-Objekt (verwende Range)
- Verwende Objekte damit du immer genau weisst an was du «arbeitest»

> With ActiveDocument.Shapes.AddPicture("c:\auge.jpg", True,
> False, , , Width:=173, Height:=162)

Noch eine weiterer empfehlung Entweder arbeitest du mit unbannten Parametern
und musst alle setzen (also ,,,) oder du verwendest benannten Parameter
(Width:=173). Das zweite würde ich vorziehen, da der Code lesbarer wird.

> Mit den Begriffen Anchor und Range kann ich jetzt nicht
> wirklich was anfangen? Kannst du mir das genauer erklären?

Anchor ist der Ankerpunkt wo dein Shape im Text aufgehängt ist (in deinem
Fall der Bereich der Textmarke). Wird nichts angegeben, so wie bei deinem
Code, so verwendet Word den Absatz als wo der Cursor steht (=Selection)

Range ist ein Bereich. In Word ist so ziemlich alles ein Range (jeder
Absatz, Kopfzeile, Tabelle usw.). Hinzu kommt natürlich auch, das dieser
Range wiederum Bereiche enthält [z.B.
ActiveDocument.Tables(1).Range.Paragraphs(2).Range] und so kannst du jeden
Teil von Word ansprechen ohne Selection zu verwenden (also der Cursor muss
nicht positioniert werden, das Bild flackert fast nicht, du bist schneller
usw.)

0 new messages