Date: prev next · Thread: first prev next last
2021 Archives by date, by thread · List index


Hallo Regina,

ich habe mal folgendes Makro geschrieben.

Es fügt eine Grafik aus der Zwischenablage in ein Writer-Dokument ein.
Die gewünschte Größe wird gesetzt und das Bild/ die Grafik wird
positioniert.

Ab dem Kommentar:
'------------------- Logo zuschneiden
------------------------------------------------------
befindet sich ein auskommentierter Teil, mit dem die Grafik auch
zugeschnitten werden könnte.

Der Code:

REM  *****  BASIC  *****

'************************************************************************************
'    - Dieser Code fügt eine Graifk aus der Zwischenablage in das
Dokument ein.
'     - Das Bild ist markiert.
'    - Die Größe wird geändert und
'    - das Bild wird an seine Zielposition verschoben.
'    - Zuschneiden ist mit dem Codeteil Zeile 59 -70 möglich,
'       ist aber derzeit auskommentiert.
'*************************************************************************************
Sub InsertLogo
Dim oDoc as object
Dim oShape as Object
Dim oPage as Object
Dim oGraphicCrop as Object
Dim oSel as Object
Dim oFrame as Object
Dim Dispatcher as object

Dim nIndexDraw as Integer
Dim i as Integer

    oDoc=ThisComponent

REM ----------------------------------------------------------------------
REM Grafik aus Zwischenablage einfügen
rem get access to the document
oFrame   = oDoc.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
        dispatcher.executeDispatch(oFrame, ".uno:Paste", "", 0, Array())


    ' aktuelle Markierung/ Selektion erfassen
    oSel = oDoc.CurrentSelection

    ' Prüfen ob sich der Inhalt der Selektion ein Grafikobjet ist
    ' Wenn kein Bild, dann Programm beenden
    If oSel.ImplementationName <> "SwXTextGraphicObject" Then
       Exit Sub
    End If
'  xray oSel
    ' Dem aktuellen Bild einen vorläufigen Namen zuweisen,
    ' zweck späterer Identifikation
    oSel.setName("Bildname")

   oPage = oDoc.drawPage
 '  xray oPage

   ' Objektzuweisung für das gewünschtes Bild
   for i = 0 to oPage.count
       oShape = oPage.getByindex(i)
       if oshape.name = "Bildname" then
               nIndexDraw=i
                   exit for
       End if
   next i

'xray oShape(nIndexDraw)

'------------------- Logo zuschneiden
------------------------------------------------------
'oGraphicCrop = oShape.GraphicCrop
    ' Zuschnitte festlegen
'    With oGraphicCrop
'        .Top = 1000
'        .Bottom = 14000
'        .Left = 500
'        .Right = 2000
'    End With
' Logo entsprechend der obigen Parameter zuschneiden
'oShape.GraphicCrop = oGraphicCrop
'--------------------------------------------------------------------------------------------

'------------------- Logo-Größe ändern
------------------------------------------------------
Dim nB as Long
Dim nH as Long
' Variablen für die Logo-Größe
nB=3000    ' Höhe Logo
nH=3000    ' Breite Logo

' Größenobjekt erstellen
Dim aGrafikGroesse As new com.sun.star.awt.Size
' Größenzuweisung
    With aGrafikGroesse
        .height = nH
        .width = nB
    End With
'Größe entsprechend der obigen Parameter zuschneiden dem Logo zuweisen
oShape.setSize(aGrafikGroesse)
'--------------------------------------------------------------------------------------------


'------------------- Logo an Zielposition verschieben
---------------------------------------
With oShape
    .HoriOrientPosition=5500        ' = cm * 1000
    .VertOrientPosition=6000-560    ' = cm * 1000 [560 = 0,56cm =
relative Höhe des Bildes]
End With
'--------------------------------------------------------------------------------------------

'----------------- Dem Logo einen neuen Bildnamen geben
-------------------------------------
'    Bildname = Logo & _ & Zufallszahl (Integer aus Datum)
'     das heutige Datum erfassen
Dim xD as Date
Dim nZufall as Long
    xD=Date
    ' Zufallszahl berechnen
    nZufall = Int((xD * Rnd) -2)

        ' dem markierten Objekt einen neuen Namen zuweisen.
        oShape.Name="Logo_" & nZufall

End Sub

Viele Grüße

Jürgen


Am 11.02.2021 um 19:03 schrieb Regina Henschel:
Hallo,

hat jemand ein Basic Macro Snippet um ein Custom-Shape (z.B. ein
Smiley) in eine Seite einzufügen?

Hintergrund: Für einen Unittest müsste ich per Code ein Custom-Shape
so einfügen, wie man es mit der Maus macht. Ich habe aber keine Idea
wie das gehen kann. Ein Makro könnte mir vielleicht einen
Lösungsansatz geben.

Mit freundlichen Grüßen
Regina


--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.