Macro Word opnemen werkt niet

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • yourservice
  • Registratie: April 2008
  • Laatst online: 15-04 10:13
Mijn vraag:

Kan ik de grootte van een afbeelding aanpassen in een macro in word?

Zodra ik een macro wil opnemen in mijn document met afbeeldingen om de grootte te wijzigen krijg ik netjes de muisaanwijzer met opnamesymbool.

Afbeeldingslocatie: https://tweakers.net/i/zKv28Cbo2_t04Ct1wqj5Ed_RjiI=/fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():strip_exif()/f/image/6xLpqKNHyOPB9dwk4mIdDWBd.jpg?f=user_large

Dan wil ik dus de afbeelding aanklikken en vervolgens Grootte en positie... , Hoogte, breedte... uitschakelen net als In verhouding... en dan de juiste absolute grootte kiezen voor de betreffende afbeelding.

Afbeeldingslocatie: https://tweakers.net/i/rbwpWkUatSdM8T3HBrwDBHy_4gE=/fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():strip_exif()/f/image/2bROpk4SJXSUWb5gEuLbzFu2.jpg?f=user_large

Zodra ik echter klik op de afbeelding, links of rechts, gebeurt er helemaal niets.

Relevante software en hardware die ik gebruik:

Windows 11, MS Office 365, meest recent.

Wat ik al gevonden of geprobeerd heb:

Google geraadpleegd, kom dit verder niet tegen.

[ Voor 9% gewijzigd door yourservice op 13-04-2025 09:16 . Reden: typo ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Boeryepes
  • Registratie: Januari 2016
  • Niet online
Google is your friend en dan vind je Stackoverflow.com... Zeker een bookmark waardige bron voor eenieder die software bouwt.

En in dit geval een antwoord van één van de goden (godin) aangaande Word vba... Cindy Meister!

https://stackoverflow.com...set-image-layout-and-size

Ps. Opnemen werkt niet altijd. Er is het nodige in Word macro's/add-ins dat al sinds jaren niet verder ontwikkeld wordt, maar eruit halen doen ze niet. Mijns inziens vanwege de vele automations die ermee gemaakt zijn.

[ Voor 27% gewijzigd door Boeryepes op 13-04-2025 09:41 ]

The biggest communication problem is we do not listen to understand. We listen to reply.


Acties:
  • 0 Henk 'm!

  • yourservice
  • Registratie: April 2008
  • Laatst online: 15-04 10:13
Ik kom een heel eind maar er zijn heel veel beren op de weg.

Afbeelding selecteren, kopiëren (er moet iets in het geheugen staan), dan wordt de grootte van de afbeelding gewijzigd maar komt deze voor de oude te staan. Vervolgens dus de oude afbeelding verwijderen en dan moet ik nu nog maar zien hoe ik deze vernieuwde afbeelding weer op lijn krijg met de rest van de afbeeldingen.

Kortom, meer werk dan wat ik al deed.

De conclusie is dus dat wat ik wil niet kan.

Acties:
  • 0 Henk 'm!

  • dixet
  • Registratie: Februari 2010
  • Laatst online: 17:11
yourservice schreef op zondag 13 april 2025 @ 11:25:
Ik kom een heel eind maar er zijn heel veel beren op de weg.

Afbeelding selecteren, kopiëren (er moet iets in het geheugen staan), dan wordt de grootte van de afbeelding gewijzigd maar komt deze voor de oude te staan. Vervolgens dus de oude afbeelding verwijderen en dan moet ik nu nog maar zien hoe ik deze vernieuwde afbeelding weer op lijn krijg met de rest van de afbeeldingen.
Op internet gevonden code gebruiken begint met snappen wat het doet. De vraagsteller in de stackoverflow link wil een geplakte afbeelding resizen. Daarom zit die paste in de code.

Aan jouw vraag te zien wil je helemaal niet plakken, dus is die code niet relevant. Voor jou zijn alleen de laatste 4 regels relevant.
yourservice schreef op zondag 13 april 2025 @ 11:25:
Kortom, meer werk dan wat ik al deed.

De conclusie is dus dat wat ik wil niet kan.
Verkeerde conclusie. Het kan zeker, maar je moet wel snappen wat de code doet, niet blind knippen en plakken

Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Je wilt eigenlijk nooit opnemen gebruiken om productie-code te maken. Dat levert slechte resultaten. Hooguit gebruiken om inspiratie op te doen en dan op te zoeken wat de gebruikte functies doen.

Maar als je het wel doet, dan zonder de muis te gebruiken.

Hier wil je inderdaad het figuur-object direct aanspreken. Je kunt met For each shp in doc.Shapes [...] alle shapes af gaan.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Inderdaad, de macrorecorder werkt niet in combinatie met ingebouwde dialogen van Word. Zodra een dialoog getoond wordt legt de macrorecorder op zijn hoogst de resulterende actie vast. Maar in dit geval werkt het sowieso niet: de format_picture dialoog bestaat niet meer in VBA sinds 2013 of zo.

Als je wilt wat ik denk dat je wilt, namelijk een dialoog tonen waarin een aantal properties al goed zijn ingesteld en je enkel nog het absolute fomraat wilt kunnen invullen kun je met
code:
1
wdDialogFrameSetProperties.display
een ingebouwde dialoogtonen en vervolgens in vba de eigenschappen van het shape object instellen of je maakt een supersimpel eigen dialoogje met twee invoervelden.

In beide gevallen moet je zelf aan de slag en heb je niets aan de recorder.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

bijvoorbeeld
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Sub ChangeImageSize()
    Dim pic As Shape
    Dim dlgFrame As Dialog
    ' als het plaatje een inline shape is dan converteer het naar een shape
    If Selection.Type = wdSelectionInlineShape Then
     Selection.InlineShapes(1).ConvertToShape
    End If
    
    ' precies een shape in de selectie?
    If Selection.Type = wdSelectionShape And Selection.ShapeRange.Count = 1 Then
        'Haal de shape op
        Set pic = Selection.ShapeRange(1)
        'init dialog
        With Dialogs(wdDialogEditFrame)
            .fixedWidth = pic.Width
            .fixedheight = pic.Height()
            ' laat dialog zien en controleer of hij gesloten is met ok knop
            If .Show() = -1 Then
                ' zo ja, stel hoogte en breedte onafhankelijk van elkaar in in en doe verder niets met de info uit de dialoog
                pic.LockAspectRatio = False
                pic.Width = Val(.fixedWidth) * 28.34646
                pic.Height = Val(.fixedheight) * 28.34646
            End If
        End With
    Else
        MsgBox "Selecteer aub 1 plaatje"
    End If
End Sub

[ Voor 3% gewijzigd door Lustucru op 14-04-2025 10:43 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • yourservice
  • Registratie: April 2008
  • Laatst online: 15-04 10:13
Bedankt voor de reacties, ik ga hiermee aan de slag.
Pagina: 1