Toon posts:

[VB] Width- en Heightwaarden in cm of mm?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wou dus foto's aanpassen aan A4-formaat dmv een macro in Word.
Nu wil ik ze een waarde in cm of mm meegeven, maar als ik een macro opneem en de waarden 8,05 cm (hoogte/Width) & 13,5 cm (breedte/Width) meegeef, komt er in de VBA-mode dit te staan:
code:
1
2
Selection.InlineShapes(1).Height = 228.2
Selection.InlineShapes(1).Width = 382.7

De waarden Width en Height worden standaard als single gedefinieerd, maar welke "maatstaf" is deze 228,2 en 382,7?
Zijn dit pixels?
Ik wil dus bv. dat de afbeelding een maximale breedte van 96.5 mm en een maximale hoogte van 145 mm krijgt.

Ik heb zo te zien een algemene factor van 0,35276... gevonden, maar deze gaat nog veel kommagetallen door.

Is er geen manier waarop ik rechtstreeks een waarde in millimeters of centimeters kan (op-) meegeven?
Of ben ik aangewezen op die factor? En weet er iemand dan de exacte factor waarmee ik kan werken?
Thanks

[ Voor 5% gewijzigd door Verwijderd op 04-08-2004 12:33 ]


Verwijderd

Topicstarter
mja, heb het ondertussen zelf opgelost door deze waarde te gebruiken:
code:
1
= CentimetersToPoints(14.5)


Maar nou zit ik met een ander probleem...
Ik geef duidelijk mee dat de AspectRatio gelijk moet zijn, zo dat de hoogte en breedte verhouding dezelfde is:
code:
1
Selection.InlineShapes(1).LockAspectRatio = msoTrue


maar telkens als ik dan een hoogte (of breedte) meegeef,
gaat de breedte (of hoogte) niet synchroon mee...
code:
1
2
Selection.InlineShapes(1).LockAspectRatio = msoTrue
Selection.InlineShapes(1).Height = CentimetersToPoints(9.65)

-> Dan nog past hij enkel de hoogte aan...
Hoe zorg ik ervoor dat hij de breedte synchroon mee vergroot?
Met andere woorden:
Kan ik een figuur scalen?
met ScaleHeigt ipv Heigt lukt het ook niet.

[ Voor 16% gewijzigd door Verwijderd op 03-08-2004 23:05 ]


Verwijderd

Topicstarter
Jaat heb het op een ander forum gevonden:
http://www.xtremevbtalk.com/archive/index.php/t-174783.html
Daar zegt hulett819 het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim wdInlineImage As Word.InlineShape
Dim wdDoc As Word.Document

Dim WIDTH_YOU_WANT

WIDTH_YOU_WANT = MillimetersToPoints(117.33)

Set wdDoc = ThisDocument
Set wdInlineImage = wdDoc.Range(0).InlineShapes.AddPicture("c:\test.bmp", False, True)

With wdInlineImage
' (WIDTH_YOU_WANT / .Width) is the ratio (percentage)
.Height = .Height * (WIDTH_YOU_WANT / .Width)
.Width = WIDTH_YOU_WANT
End With

als je dit een beetje aanpast heb je:
code:
1
2
3
4
5
6
7
8
9
Dim lngratio As Long
Dim sngnieuweBreedte As Single
' Hier kan je de waarde al meegeven als deze vastligt op voorhand.
sngnieuweBreedte = MillimetersToPoints(96.5)

With Selection.InlineShapes(1)
        .Height = Selection.InlineShapes(1).Height * (sngnieuweBreedte / Selection.InlineShapes(1).Width)
        .Width = sngnieuweBreedte
End With


Dit even voor de mensen die in de toekomst dit ook nodig hebben!
Topic mag dicht

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:50

gorgi_19

Kruimeltjes zijn weer op :9

jarnodb,

Een topic gaat niet dicht als iets is opgelost :) Een topic gaat in principe alleen dicht als deze tegen de policy in gaat of dreigt te gaan. :) Wie weet dat mensen nog meerdere of andere / betere suggesties hebben voor jouw probleem :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Nu zit ik weer met een ander probleem |:(
Ik wil een figuur op basis van de lengte en breedte, al dan niet 90° draaien (naar rechts of naar links speelt eigenlijk geen rol, maar liefst rechts)
Nu heb ik al volgende code:
code:
1
2
3
4
5
6
7
8
9
Select Case Selection.InlineShapes(1).Height

Case Is < Selection.InlineShapes(1).Width
    With Selection.InlineShapes(1)
        .Height = Selection.InlineShapes(1).Height * (sngnieuweHoogte / Selection.InlineShapes(1).Width)
        .Width = sngnieuweHoogte
        .Rotation (90)
    End With
End Select

Natuurlijk gaat de code nog verder, maar het is om je een idee te geven...
Die .Height en .Width passen de figuur aan zodat deze niet te hoog is.

Nu wil ik dus ook dat hij de figuur 90°draait.
Dus zocht ik in de helpt naar "rotate".
Daar vond ik bij de shapes (en Inlineshapes) iets over .IncrementRotation(90)

Deze functioneert niet, ook niet als ik .Rotation(90) neem.
Blijkbaar kunnen deze functies niet toegepast worden op een selectie of inlineshape.

De fout die ik krijg is de volgende:

------------------------------------------------------------
Compileerfout:

Kan de methode of het gegevenslid niet vinden
------------------------------------------------------------

Kan er iemand mij vertellen hoe ik deze figuur toch gedraait krijg of wat ik verkeerd doe?