wie bilder in word insert und scalieren

  • wie bilder in word insert und scalieren
    hi , muesste bilder beim einfuegen auf max 10cm hoehe skalieren ,
    mit

    [autoit][/autoit][autoit][/autoit][autoit]

    _WordDocFindReplace($oDoc, $qlastfil, "", 0, $oRange) ;// qq66yy Runs the specified find and replace operation.
    With $oRange
    ; Insert a new line, updating the range.
    .insertAfter (@CR)
    .insertAfter (@CR)
    ; Collapse Einsturz the range to the end point
    .Collapse ($wdCollapseEnd)
    EndWith
    ; Add the specified picture to the range
    sleep(66)
    $sPicPath = $qqGDirectory & "\" & $pimgnamqq & "."& $qexten
    _WordDocAddPicture($oDoc, $sPicPath, 0, 1, $oRange)
    sleep(66)
    $oDoc.Range.InsertAfter($pimgnamqq & @CRLF )

    [/autoit]


    fueg ich bilder , 2 pro seite in word ein
    nun finde ich nicht wie ich die bilder auf 10 cm hight max scaliere (width is dann 13.3 cm aber wenn ein bild im portrait format dabei ist soll es einfach auf 10 cm hight scaliert werden

    . . . . . .
    .> KLIENT: ..wieviel kostet mich das?
    .> CHEF: 20 Jahre! zum Glueck haben wir schon vor 20 Jahren angefangen
    . . . . . .

  • habe wordmacros zum bilder scalieren gefunden , die muesste man doch in autoit nachbilden koennen?
    - oder soll ich das wordmacro mit autoit aufrufen?

    [autoit]


    ; *******************************************************
    ; Example 1 - Create a word window with a new blank document,
    ; then add some pictures to the document.
    ; *******************************************************
    ;
    #include <Word.au3>

    [/autoit][autoit][/autoit][autoit]

    $sPath = @WindowsDir & "\"
    $search = FileFindFirstFile($sPath & "*.bmp")

    [/autoit][autoit][/autoit][autoit]

    ; Check if the search was successful
    If $search = -1 Then
    MsgBox(0, "Error", "No images found")
    Exit
    EndIf

    [/autoit][autoit][/autoit][autoit]

    $oWordApp = _WordCreate ()
    $oDoc = _WordDocGetCollection ($oWordApp, 0)

    [/autoit][autoit][/autoit][autoit]

    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    $oShape = _WordDocAddPicture ($oDoc, $sPath & $file, 0, 1)
    If Not @error Then $oShape.Range.InsertAfter (@CRLF)
    WEnd

    [/autoit][autoit][/autoit][autoit]

    ; Close the search handle
    FileClose($search)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;//............................................................................
    ;// http://www.ms-office-forum.net/forum/showthread.php?p=1099643
    ;// wordmacro

    [/autoit][autoit][/autoit][autoit]

    Option Explicit

    [/autoit][autoit][/autoit][autoit]

    Sub InsertPicture()

    Dim sPath As String
    Dim sBildPfad As String
    Dim lRes As Long

    'Hier den Pfad eingeben von wo aus die Bilder geöffnet werden sollen
    sBildPfad = "C:\Dokumente und Einstellungen\mihinte\Desktop\cair"

    'aktuellen PicturePfad merken
    sPath = Options.DefaultFilePath(Path:=wdPicturesPath)

    'Bildpfad ändern
    Options.DefaultFilePath(Path:=wdPicturesPath) = sBildPfad

    'Dialog öffnen
    lRes = Application.Dialogs(wdDialogInsertPicture).Show

    'Pfad zurücksetzten
    Options.DefaultFilePath(Path:=wdPicturesPath) = sPath

    If lRes <> 0 And ActiveDocument.InlineShapes.Count > 0 Then
    'wenn bild eingefügt wurde, dann Bildgrösse anpassen
    Call BildGroesse(ActiveDocument.InlineShapes(ActiveDocument.InlineShapes.Count))
    End If

    End Sub

    [/autoit][autoit][/autoit][autoit]

    Sub BildGroesse(oPic As InlineShape)
    Dim iScale As Single
    Dim iBreite As Single

    [/autoit][autoit][/autoit][autoit]

    iBreite = 188 'Bildgrösse in Pixel

    [/autoit][autoit][/autoit][autoit]

    oPic.LockAspectRatio = msoTrue
    ' Skalierungsfaktor in Pixel für Breite festlegen
    iScale = (iBreite / oPic.Width) * 100
    oPic.ScaleWidth = iScale
    oPic.ScaleHeight = iScale
    End Sub
    EndIf


    ;//............................................................................
    ;// http://www.ms-office-forum.net/forum/showthread.php?p=1099643
    ;// wordmacro

    [/autoit][autoit][/autoit][autoit]

    Sub InsertPicture()

    Dim sPath As String
    Dim sBildPfad As String
    Dim lRes As Long
    Dim MyShape As InlineShape


    'Hier den Pfad eingeben von wo aus die Bilder geöffnet werden sollen
    sBildPfad = "C:\Dokumente und Einstellungen\mihinte\Desktop\cair"

    'aktuellen PicturePfad merken
    sPath = Options.DefaultFilePath(Path:=wdPicturesPath)

    'Bildpfad ändern
    Options.DefaultFilePath(Path:=wdPicturesPath) = sBildPfad

    'Dialog öffnen
    lRes = Application.Dialogs(wdDialogInsertPicture).Show

    'Pfad zurücksetzten
    Options.DefaultFilePath(Path:=wdPicturesPath) = sPath

    If lRes <> 0 And ActiveDocument.InlineShapes.Count > 0 Then
    'wenn bild eingefügt wurde, dann Bildgrösse anpassen
    For Each MyShape In ActiveDocument.InlineShapes
    Call BildGroesse(MyShape)
    Next
    End If
    End Sub

    [/autoit][autoit][/autoit][autoit]

    Sub BildGroesse(oPic As InlineShape)
    Dim iScale As Single
    Dim iBreite As Single

    [/autoit][autoit][/autoit][autoit]

    iBreite = 188 'Bildgrösse in Pixel

    [/autoit][autoit][/autoit][autoit]

    oPic.LockAspectRatio = msoTrue
    ' Skalierungsfaktor in Pixel für Breite festlegen
    iScale = (iBreite / oPic.Width) * 100
    oPic.ScaleWidth = iScale
    oPic.ScaleHeight = iScale
    End Sub

    [/autoit][autoit][/autoit][autoit]

    ;//...............................................................
    ;//http://www.office-loesung.de/ftopic90751_0_0_asc.php

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ' Meine Lösung für mein Problem Rolling Eyes
    Rolling Eyes

    [/autoit][autoit][/autoit][autoit]

    TMRange.InlineShapes.AddPicture picture, False, True

    [/autoit][autoit][/autoit][autoit]

    'TMRange.InlineShapes(1).LockAspectRatio = msoTrue ' ignored in word 2003/07
    ' Also selber schreiben:
    Dim iScale0 As Single
    Dim oldHeight0 As Integer
    Dim oldWidth0 As Integer
    oldHeight0 = TMRange.InlineShapes(1).Height 'backup alte hoehe
    oldWidth0 = TMRange.InlineShapes(1).Width 'backup alte breite

    [/autoit][autoit][/autoit][autoit]

    TMRange.InlineShapes(1).Width = 250 ' 250 Pixel fest vorgegeben

    [/autoit][autoit][/autoit][autoit]

    'Berechnung des Skalierungsfaktors
    iScale0 = TMRange.InlineShapes(1).Width / oldWidth0

    [/autoit][autoit][/autoit][autoit]

    'Skalierung der Hoehe anhand der alten Breite und des errechneten iScale
    TMRange.InlineShapes(1).Height = oldHeight0 * iScale0

    [/autoit][autoit][/autoit][autoit]

    ' Das gleiche für Word 2003 in einer Zeile, was in Word 2007 nicht mehr geht
    ' TMRange.InlineShapes(1).ScaleWidth = TMRange.InlineShapes(1).ScaleHeight

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    objWord.ActiveDocument.Bookmarks.Add Name:=TMName, Range:=TMRange
    End If Rolling Eyes Rolling Eyes

    ;//...........................................................................

    [/autoit][autoit][/autoit][autoit]

    links
    open office Bilder Skalieren: http://www.ooowiki.de/AutorenCaf%C3%A9

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]

    . . . . . .
    .> KLIENT: ..wieviel kostet mich das?
    .> CHEF: 20 Jahre! zum Glueck haben wir schon vor 20 Jahren angefangen
    . . . . . .

  • so damit sollte es leicht gehen - wenn ich nur wuesste wie ich das in autoit einbau..

    ZITAT:: http://www.office-loesung.de/ftopic90751_0_0_asc.php

    [autoit]


    wordmacro::
    AW: Makro um Bilder zu verkleinern
    Nach oben

    Hallo Franz,

    wenn ich das richtig verstehe, meinst Du, das Bild auf 8 cm zu zoomen, jedoch mit unverändertem Seitenverhältnis. Das geht dann etwa so:
    Code: Sub Test()

    Dim Breite As Single

    With Selection.InlineShapes(1)
    If .LockAspectRatio = msoFalse Then
    .LockAspectRatio = msoTrue
    End If
    .Width = CentimetersToPoints(8)
    Breite = .ScaleWidth
    .ScaleHeight = Breite
    End With

    End Sub

    Für eine Shape so:
    Code: Sub Test2()
    'Shape
    Dim Breite As Single

    With Selection.ShapeRange(1)
    If .LockAspectRatio = msoFalse Then
    .LockAspectRatio = msoTrue
    End If
    .Width = CentimetersToPoints(8)
    End With

    End Sub

    Falls noch weitere Rückfragen sind, wäre es freundlich, wenn Du sagst, ob Shape oder InlineShape, damit man nicht immer doppelte Arbeit hat.
    _________________
    Sei doch so nett und gib eine Rückmeldung, ob es klappt!
    Gruß, Lisa

    [/autoit][autoit][/autoit][autoit][/autoit]

    . . . . . .
    .> KLIENT: ..wieviel kostet mich das?
    .> CHEF: 20 Jahre! zum Glueck haben wir schon vor 20 Jahren angefangen
    . . . . . .