[VBA] Afbeelding plaatsen in macro

Pagina: 1
Acties:
  • 1.215 views sinds 30-01-2008
  • Reageer

  • Robert89
  • Registratie: Februari 2005
  • Laatst online: 16-07 08:23
Voor mijn stage moet ik het 'proces' waarbij het logo rechtsbovenin wordt geplaatst in een offerte -dat nu handmatig wordt gedaan- automatiseren. Nu weet ik wel dat dit mogelijk is met een macro maar ik heb daar nog niet zoveel gebruik van gemaakt.

Ik ben dit dus in een macro gaan opnemen, maar wanneer ik het logo 'achter tekst' wil plaatsen, zodat ik het logo naar de juiste plaats wil slepen, dan kan dit niet omdat het menu niet opent wanneer er op dubbelklik.

Wanneer ik de macro pauzeer kan dit wel, en als ik het logo dan achter de tekst heb geplaatst en de opneem functie weer inschakel kan ik gewoon met het logo slepen maar wanneer ik de Sub dan wil uitvoeren geeft hij een fout (Fout 424: Object vereist) maar met die code wordt ik nog niks wijzer.

Iemand die me hiermee kan helpen?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 15:57

mulder

ik spuug op het trottoir

Gewoon een sjabloon maken is geen oplossing?

oogjes open, snaveltjes dicht


  • JJvG
  • Registratie: Juli 2003
  • Laatst online: 16-07 15:17
Je kunt het menu niet alleen via het snelmenu (rechtermuisknop of dubbelklikken) openen, maar ook via Format > Picture (sorry, heb Engels versie. Zit direct naast Insert (Invoegen) menu.

Ik heb even getest en met een clipart werkt het niet, maar met een plaatjes uit een bestand werkt het wel gewoon netjes (in een macro).

De regel code die je nodig hebt is:
Selection.ShapeRange.WrapFormat.AllowOverlap = True

  • Robert89
  • Registratie: Februari 2005
  • Laatst online: 16-07 08:23
JJvG schreef op woensdag 01 november 2006 @ 12:48:
Je kunt het menu niet alleen via het snelmenu (rechtermuisknop of dubbelklikken) openen, maar ook via Format > Picture (sorry, heb Engels versie. Zit direct naast Insert (Invoegen) menu.

Ik heb even getest en met een clipart werkt het niet, maar met een plaatjes uit een bestand werkt het wel gewoon netjes (in een macro).

De regel code die je nodig hebt is:
Selection.ShapeRange.WrapFormat.AllowOverlap = True
Daar had ik nog niet aan gedacht, helaas blijft deze functie bij mij tijdens een macro niet-klikbaar. Ook als ik die line met code er tussen duw geeft ie een foutmelding.
Gewoon een sjabloon maken is geen oplossing?
Dat is dus een beetje het probleem. Het logo is op het papier waarop de offerte geprint wordt al aanwezig. Alleen wanneer de offerte digitaal naar een klant gestuurd wordt moet het logo worden ingevoegd.

In ieder geval bedankt voor jullie snelle reacties!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Dan zou ik er eerder voor kiezen om het offertesjabloon met logo uit te voeren en of afbeeldingen niet af te drukken (gewoon document optie) of tijdens de printopdracht het logo te verbergen (stukje vba, voorbeeld onder F1 bij shapes)

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


  • Robert89
  • Registratie: Februari 2005
  • Laatst online: 16-07 08:23
Hmm, door een tijdje rondgooglen heb ik een stukje code gevonden die de afbeelding achter de tekst plaats zonder dat tijdens het opnemen te hoeven doen. Nu is het probleem alleen dat ik niet weet hoe ik verder kan werken in deze macro (de afbeelding moet nog naar een specifieke locatie rechtsboven worden geplaatst en iets gescaled worden). Kan ik een gemaakte macro ook nog 'resumen' in opneem modus?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 15:57

mulder

ik spuug op het trottoir

Je kunt toch gewoon twee macro's samenvoegen?

oogjes open, snaveltjes dicht


  • whoami
  • Registratie: December 2000
  • Nu online
VBA is eigenlijk office specifiek, vandaar dat 'k m naar Officesuites en - software verplaats
-> OFF

[ Voor 14% gewijzigd door whoami op 02-11-2006 12:31 ]

https://fgheysels.github.io/


  • Robert89
  • Registratie: Februari 2005
  • Laatst online: 16-07 08:23
Don Facundo schreef op donderdag 02 november 2006 @ 12:24:
Je kunt toch gewoon twee macro's samenvoegen?
Mja klopt, maar het verwijzen naar een bepaalde afbeelding gaat nogal 'relatief' dan. Voorbeeldje:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Platts()
    
        Dim shp As Word.Shape
    Set shp = ActiveDocument.Shapes.AddPicture("U:\LOGO.jpg")
    shp.WrapFormat.Type = wdWrapNone
    shp.ZOrder msoSendBehindText
    
End Sub
Sub Plaatsen()

    ActiveDocument.Shapes("Picture 35").Select
    Selection.ShapeRange.IncrementLeft 387.1
    Selection.ShapeRange.IncrementTop -93.15
    Selection.ShapeRange.ScaleWidth 0.79, msoFalse, msoScaleFromTopLeft
    Selection.ShapeRange.ScaleHeight 0.79, msoFalse, msoScaleFromBottomRight
    Selection.ShapeRange.IncrementLeft -2.45
    Selection.ShapeRange.IncrementTop 15.65
End Sub


De eerste sub importeert dus de afbeelding en plaatst deze achter tekst. De tweede plaatst de afbeelding rechtsboven en schaalt deze naar de juiste afmetingen, tenminste, dat hoort ie te doen. Het punt is alleen dat hij dus refereert naar Picture 35 als object, maar dit is dus telkens verschillend. Kan ik dit niet steevast naar U:\LOGO.jpg binnen dat document laten wijzen?

EDIT//Code zal er vast wel een beetje vies uitzien, maar ik ben geen vba kenner. Functionaliteit boven uiterlijk zullen we maar zeggen.

[ Voor 5% gewijzigd door Robert89 op 02-11-2006 13:13 ]


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 15:57

mulder

ik spuug op het trottoir

code:
1
2
3
4
5
6
7
8
9
10
11
Sub Platts()
    
        Dim shp As Word.Shape
    Set shp = ActiveDocument.Shapes.AddPicture("U:\LOGO.jpg")
    shp.WrapFormat.Type = wdWrapNone
    shp.ZOrder msoSendBehindText
    shp.Select ' of iets dergelijks ActiveDocument.Shapes(shp.Name).Select
    Selection.ShapeRange.IncrementLeft 387.1
    Selection.ShapeRange.IncrementTop -93.15
    ...
End Sub

oogjes open, snaveltjes dicht


  • Robert89
  • Registratie: Februari 2005
  • Laatst online: 16-07 08:23
Works like a charm, ontzettend bedankt!

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 22:03
Of:
code:
1
2
3
4
5
6
7
8
9
10
11
12
Sub Platts()
    
        Dim shp As Word.Shape
    Set shp = ActiveDocument.Shapes.AddPicture("U:\LOGO.jpg")
    With shp 
     .WrapFormat.Type = wdWrapNone 'let op de punt vooraan deze regels
     .ZOrder msoSendBehindText
     .ShapeRange.IncrementLeft 387.1 
     .ShapeRange.IncrementTop -93.15
     ...
    End with
End Sub

* onkl is weer eens spuit 11. It hurts, but you get used to it. :+

[ Voor 9% gewijzigd door onkl op 02-11-2006 13:34 ]

Pagina: 1