Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[VBA / Word 2007] Plaatje in tabel resizen lukt niet

Pagina: 1
Acties:

  • beckers
  • Registratie: December 2007
  • Laatst online: 27-11 10:24
Ik probeer met een Word 2007 macro plaatjes in de linkerkolom van een tabel te zetten. Daarbij moeten de plaatjes verkleind worden.

Word laat geen macro's opnemen voor het wijzigen van plaatjes, dus op die manier kan ik niet zien hoe Word het zelf zou doen.

Ik heb de volgende code geschreven, de plaatjes komen keurig in de tabel, maar het verkleinen werkt niet:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
' Maak tabel
   ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=5, NumColumns:= _
        2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
        wdAutoFitFixed

' Zet plaatjes en beschrijving in de tabel 
For i = 1 To 5
        Selection.InlineShapes.AddPicture FileName:= _
        "C:\plaatje\" & i, LinkToFile:=False, SaveWithDocument:=True
              
        With Selection.InlineShapes
          .ScaleHeight 5, msoFalse, msoScaleFromTopLeft
          .ScaleWidth 5, msoFalse, msoScaleFromTopLeft
        End With
        
        Selection.MoveRight Unit:=wdCharacter, Count:=1

        Selection.TypeText ("beschrijving plaatje")

        Selection.MoveDown Unit:=wdLine, Count:=1
        Selection.MoveLeft Unit:=wdCharacter, Count:=1
Next


Als ik in plaats van regel 8 t/m 14 probeer:
code:
1
2
3
4
5
6
7
  Dim t As InlineShape
        
  Set t = ActiveDocument.InlineShapes.AddPicture("c:\plaatjes\" & i, False, True)
  With t
    .Height = 50
    .Width = 50
  End With


dan worden de plaatjes wel verkleind, maar komen ze niet in de tabel terecht.

Mijn vraag is dus hoe de plaatjes in de tabel gezet en verkleind kunnen worden?

Verwijderd

beckers schreef op woensdag 07 mei 2008 @ 12:02:Word laat geen macro's opnemen voor het wijzigen van plaatjes, dus op die manier kan ik niet zien hoe Word het zelf zou doen.
toch wel, klik een figuur aan en terwijl de macro opgenomen wordt kies je het menu opmaak->figuur (of indien niet beschikbaar ALT+F8->macro's in->word-opdrachten->opmaak figuur). post opnieuw mocht je nog ergens vastlopen.

  • beckers
  • Registratie: December 2007
  • Laatst online: 27-11 10:24
Opgelost!

Zoals gewoonlijk was het zo simpel...

Het probleem zat in de regel

Set t = ActiveDocument.InlineShapes.AddPicture("c:\pictures\" & i, False, True)

dat moest zijn

Set t = Selection.InlineShapes.AddPicture("c:\pictures\" & i, False, True)

De correcte code is dus:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
' Maak tabel
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=5, NumColumns:= _
2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitFixed

' Zet plaatjes en beschrijvingen in de tabel 
Dim t As InlineShape

For i = 1 To 5
Set t = Selection.InlineShapes.AddPicture("c:\pictures" & i, False, True)
With t
.Height = 50
.Width = 50
End With

Selection.MoveRight Unit:=wdCharacter, Count:=1

Selection.TypeText ("description picture")

Selection.MoveDown Unit:=wdLine, Count:=1
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Next

Verwijderd

ofwel zonder selectie werken:
Visual Basic:
1
2
3
4
5
6
'...
for i=1 to 5
  Set t = activedocument.Tables(1).Cell(i,1).Range.InlineShapes.AddPicture("c:\pictures" & i, False, True)
  '...
  activedocument.Tables(1).Cell(i,2).Range.text="description picture"
next