Archiv des LibreOffice- und OpenOffice.org-Wiki

[ÜberSicht] [TitelIndex] [WortIndex] [SeiteFinden

(./) OOo2 (./) OOo3

Nach dem Fertigstellen einer Präsentation tragen normalerweise alle Impress-Folien den Standardnamen „Folie 1“, „Folie 2“ usw. Das kann die Navigation in den Folien während der Präsentation erheblich erschweren. Dieses Makro dient dazu, alle Folien einer Präsentation gemäß ihres Titels (d.h. ihrer Überschrift) umzubenennen.

1. Anleitung

Das Makro ist dazu gedacht alle Folien auf einmal zu bearbeiten. Für jede Folie fragt das Makro nach, ob die Folie umbenannt werden soll. Es können somit einzelne Folien übersprungen werden. Standardmäßig fragt das Makro nach 5 umbenannten Folien nach, ob alle weiteren Folien ohne weitere Nachfragen umbenannt werden sollen. Dieses Verhalten kann über die Variable ClickCountThreshold gesteuert werden. Über die Variable sDefaultSlideName kann ein Name für unbenannte Folien vergeben werden. Der Platzhalter %d wird dabei durch die Foliennummer ersetzt (Standard ist "Folie %d").

2. Änderungen in Version 2

3. Quelltext

Sub FolientitelZuFolienname
REM FolientitelZuFolienname / SlideTitle2SlideName
REM 
REM Makro für Openoffice.org 2.3, 2.4, 3.0 Impress um Folien-Titel auf Folien-Namen zu übertragen
REM 
REM COPYRIGHT
REM     Version 2, deutsch: Copyright 2009 willifernandez@gmx.net
REM 
REM LICENSE
REM     This program is free software: you can redistribute it and/or modify
REM     it under the terms of the GNU General Public License as published by
REM     the Free Software Foundation, either version 3 of the License, or
REM     (at your option) any later version.
REM 
REM     This program is distributed in the hope that it will be useful,
REM     but WITHOUT ANY WARRANTY; without even the implied warranty of
REM     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
REM     GNU General Public License for more details.
REM 
REM     You should have received a copy of the GNU General Public License
REM     along with this program.  If not, see http://www.gnu.org/licenses/.
REM 
REM 
        Dim oDoc, oSlide As Variant
        oDoc  = ThisComponent
        
        Dim sMacroName, sFirstShapesText, sSlideName, sNewSlideName, sDefaultSlideName As String
        sMacroName = "FolientitelZuFolienname"
        REM Für unbenannte Folien wird sDefaultSlideName verwendet.
        REM Der Platzhalter %d wird durch die Foliennummer ersetzt.
        sDefaultSlideName = "Folie %d"
        
        Dim i, Click, RenameCount, ClickCount, ClickCountThreshold, Click2  As Integer
        ClickCount = 0
        RenameCount = 0
        REM ClickCountThreshold legt fest, nach wieviel Dialogen abgefragt wird
        REM ob weitere Umbenennungen ohne Nachfrage stattfinden sollen.
        ClickCountThreshold = 5
        
        Dim SkipYes, NoTextOnSlide As Boolean
        SkipYes = False
        NoTextOnSlide = True
        
        FOR i = 0 TO oDoc.DrawPages.getCount()-1 STEP 1
                NoTextOnSlide = True
                oSlide = oDoc.DrawPages.getByIndex(i)
                
                REM Keine Text-Elemente auf der Folie:
                If oSlide.getCount() > 0 Then 
                        NoTextOnSlide = False
                End If
                
                If Not NoTextOnSlide Then
                        sFirstShapesText = oSlide.getByIndex(0).getText().getString()
                        REM Zeilenumbrüche suchen und abschneiden
                        Dim iLF As Integer
                        iLF = InStr(sFirstShapesText, Chr(10))
                        If iLF > 0 Then
                                sFirstShapesText=Left(sFirstShapesText,iLF-1)
                        End If
                        REM Leerzeichen vorn und hinten entfernen
                        sFirstShapesText = Trim(sFirstShapesText)
                        REM Erstes Textelement ist leer (z.B. noch kein Titel hinzugefügt)
                        If Len(sFirstShapesText) = 0 Then
                                NoTextOnSlide = True
                        End If
                End If
                
                If NoTextOnSlide Then
                        sNewSlideName = Replace(sDefaultSlideName, "%d", i+1)
                        REM sNewSlideName = "page" & i+1
                Else
                        sNewSlideName = sFirstShapesText
                End If
                sSlideName = Trim(oSlide.getName())
                REM Workaround, für die Enigenart von Openoffice, Folien
                REM mit dem Namensschema Folie 1, Folie 2, usw.
                REM intern als "page1", "page2",... zu speichern.
                If sSlideName = "page" & i+1 Then
                        sSlideName = "Folie " & i+1
                End if
                If sSlideName <> sNewSlideName Then
                        If ClickCount >= ClickCountThreshold AND NOT SkipYes Then
                                ClickCount = 0
                                Click2 = MsgBox ("Soll nicht mehr für jede Folie einzeln nachgefragt" & Chr(13) _
                                                & "und alle weiteren Folien umbenannt werden?",4, sMacroName)
                                If Click2 = 6 Then
                                        SkipYes = True
                                End If
                        End If
                        If Not SkipYes Then 
                                Click = MsgBox ("Soll die Folie Nr. " & i+1 & Chr(13) _
                                        & "mit dem Namen  """ & sSlideName & """" & Chr(13) _
                                        & "in  """ & sNewSlideName & """  umbenannt werden?", 35, sMacroName)
                        End If
                        If Click = 6 OR SkipYes Then
                                ClickCount = ClickCount+1
                                oSlide.setName(sNewSlideName)
                                RenameCount = RenameCount+1
                        End If
                        If Click = 2 Then
                                MsgBox "Das Programm wird abgebrochen.",16,sMacroName
                                Exit For
                        End If  
                End If  
        NEXT
        MsgBox ("Programm beendet." & Chr(13) & RenameCount & " Folien umbenannt",0,sMacroName)
End Sub

Besondere Lizenzbedingungen für Programmcode

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

4. Siehe auch


KategorieImpress KategorieMakro


LizenzBedingungen | AnbieterKennzeichnung | DatenschutzErklärung | Stand: 2013-04-28