[gelöst] Makro (writer) Fußnoten umwandeln
Verfasst: Do 11. Mär 2021, 16:42
Salut,
ich möchte ein Makro schreiben, dass die Fußnoten in einem Writer-Dokument in normalen Text umwandelt und ans Ende des Dokuments setzt.
Ich habe es bereits geschafft, den Text der Fußnoten auszulesen und ans Ende des Dokuments zu schreiben, aber ich weiß nicht wie ich den Fußnotenanker durch eine „normale Zahl“ ersetzen soll.
Also, z.B. „Beispiel²“ durch „Beispiel(2)“ oder „wie geht das nur?³“ durch „wie geht das nur?(3)“ usw.
Wahrscheinlich würde es reichen, wenn mir jemand sagen könnte, wie ich den Fußnotenanker in einem Text finden kann.
Vielen Dank, JK
P.S. Weil ich nicht weiß, wie ich innerhalb dieses Beitrags ein eigenes Fenster kreieren kann, füge ich meinen Makrocode als normalen Text ein.
REM ***** BASIC *****
Option Explicit
Option Base 1
Sub Main
FussnotenAnsTextende()
RemoveAllFootnotes()
End Sub
Sub FussnotenAnsTextende()
REM Diese Subroutine schreibt den Inhalt aller Fussnoten an das Textende
Dim oDescriptor 'Der Suchdeskriptor
Dim oFound 'Der Trefferrange
Dim Doc As Object
Dim Cursor As Object
Doc = StarDesktop.CurrentComponent
Cursor = ThisComponent.Text.createTextCursor()
Dim A%
A = 1
oDescriptor = ThisComponent.createSearchDescriptor()
With oDescriptor
.SearchString = "Fußnote"
.SearchStyles = True
.SearchWords = True
.SearchCaseSensitive = False
End With
' Der erste Treffer
oFound = ThisComponent.findFirst(oDescriptor)
Cursor.gotoEnd(False)
Do While Not IsNull (oFound)
Cursor.Text.insertControlCharacter(Cursor, _
com.sun.star.text.ControlCharacter.LINE_BREAK, False)
Cursor.Text.insertString(Cursor,A,False)
Cursor.Text.insertString(Cursor,") ",False)
Cursor.Text.insertString(Cursor,oFound.getString(),False)
oFound.CharWeight = com.sun.star.awt.FontWeight.NORMAL
oFound = ThisComponent.findNext(oFound.End, oDescriptor)
A=a+1
Loop
End Sub
REM Hier fehlt die Subroutine, die Fussnotenzanker "²" durch "(2)" usw. ersetzt.
Sub RemoveAllFootnotes()
REM Diese Subroutine löscht alle Fußnoten.
Dim oDocument as Object
Dim oAllFootnotes as Object
Dim oFootnote as Object
Dim i as integer
oDocument = ThisComponent
oAllFootnotes = oDocument.getFootnotes()
For i = oAllFootnotes.Count - 1 to 0 step -1
oFootnote = oAllFootnotes(i)
oFootnote.dispose()
Next i
End Sub
ich möchte ein Makro schreiben, dass die Fußnoten in einem Writer-Dokument in normalen Text umwandelt und ans Ende des Dokuments setzt.
Ich habe es bereits geschafft, den Text der Fußnoten auszulesen und ans Ende des Dokuments zu schreiben, aber ich weiß nicht wie ich den Fußnotenanker durch eine „normale Zahl“ ersetzen soll.
Also, z.B. „Beispiel²“ durch „Beispiel(2)“ oder „wie geht das nur?³“ durch „wie geht das nur?(3)“ usw.
Wahrscheinlich würde es reichen, wenn mir jemand sagen könnte, wie ich den Fußnotenanker in einem Text finden kann.
Vielen Dank, JK
P.S. Weil ich nicht weiß, wie ich innerhalb dieses Beitrags ein eigenes Fenster kreieren kann, füge ich meinen Makrocode als normalen Text ein.
REM ***** BASIC *****
Option Explicit
Option Base 1
Sub Main
FussnotenAnsTextende()
RemoveAllFootnotes()
End Sub
Sub FussnotenAnsTextende()
REM Diese Subroutine schreibt den Inhalt aller Fussnoten an das Textende
Dim oDescriptor 'Der Suchdeskriptor
Dim oFound 'Der Trefferrange
Dim Doc As Object
Dim Cursor As Object
Doc = StarDesktop.CurrentComponent
Cursor = ThisComponent.Text.createTextCursor()
Dim A%
A = 1
oDescriptor = ThisComponent.createSearchDescriptor()
With oDescriptor
.SearchString = "Fußnote"
.SearchStyles = True
.SearchWords = True
.SearchCaseSensitive = False
End With
' Der erste Treffer
oFound = ThisComponent.findFirst(oDescriptor)
Cursor.gotoEnd(False)
Do While Not IsNull (oFound)
Cursor.Text.insertControlCharacter(Cursor, _
com.sun.star.text.ControlCharacter.LINE_BREAK, False)
Cursor.Text.insertString(Cursor,A,False)
Cursor.Text.insertString(Cursor,") ",False)
Cursor.Text.insertString(Cursor,oFound.getString(),False)
oFound.CharWeight = com.sun.star.awt.FontWeight.NORMAL
oFound = ThisComponent.findNext(oFound.End, oDescriptor)
A=a+1
Loop
End Sub
REM Hier fehlt die Subroutine, die Fussnotenzanker "²" durch "(2)" usw. ersetzt.
Sub RemoveAllFootnotes()
REM Diese Subroutine löscht alle Fußnoten.
Dim oDocument as Object
Dim oAllFootnotes as Object
Dim oFootnote as Object
Dim i as integer
oDocument = ThisComponent
oAllFootnotes = oDocument.getFootnotes()
For i = oAllFootnotes.Count - 1 to 0 step -1
oFootnote = oAllFootnotes(i)
oFootnote.dispose()
Next i
End Sub