von Stephan » Mi, 19.12.2018 17:25
Da Du den Anker der jeweiligen Fußnoten (genauer gesagt wohl den Anker (Anchor) des Fußnotenankers (ein Feld)) bereits kennst ist das einfach:
-erzeuge einen Textcursor
-Springe mit dem Textcursor zum jeweiligen Anker (ohne zu markieren)
-springe nun zum Anfang des aktuellen Absatzes ohne zu markieren
-springe zum Ende des aktuellen Absatzes (mit Markieren)
Der String des Textcursors ist nun jeweils der gesuchte Absatztext
Code: Alles auswählen
REM ***** BASIC *****
REM Auflistung aller im Dokument vorhandenen Fußnoten
REM
Dim oDocC as Object
Dim oDocW as Object
Dim oSheet as Object
Dim oRange as Object
Sub GetFootnote
Dim mArr() as Variant
Dim oCol as Object
Dim i as Long
oDocW = ThisComponent
oFN=oDocW.Footnotes
oFNSettings = oDocW.getFootnoteSettings()
cur = ThisComponent.Text.CreateTextCursor
' Öffnen eines Calc-Dokuments
oDocC = StarDesktop.loadComponentFromURL("private:factory/scalc","_blank", 0, Array())
' Referenzierung der "Tabelle 1"
oSheet = oDocC.Sheets(0)
' Zellbereich A2:B2001 zur Dinmensionierung des Array's in das Array schreiben
mArr()=osheet.getcellrangebyposition(0,1,2,2001).getDataArray
For i = 0 To oFN.Count-1
' Spalte A
mArr(i)(0) = oFN(i).Anchor.String
Msgbox oFN(i).Anchor.String & CHR(13) & oFN(i).String
' Spalte B
mArr(i)(1) = oFN(i).String
' Spalte C
cur.gotoRange(oFN(i).Anchor, False)
cur.gotoStartofParagraph(False)
cur.gotoEndofParagraph(True)
mArr(i)(2) = cur.String '"Hier fehlt der Text des Absatzes"
Next i
' Referenz Range-Objekt (Zellbereich)
oRange = osheet.getcellrangebyposition(0,1,2,2001)
' Array in Zellbereich schreiben
oRange.setDataArray(mArr)
' Spaltenüberschrift einfügen und formatieren
osheet.getCellRangeByName("A1").String="Index"
osheet.getCellRangeByName("B1").String="Fußnoten"
osheet.getCellRangeByName("C1").String="Absatzinhalt"
osheet.getCellRangeByName("A1").CharWeight = com.sun.star.awt.FontWeight.BOLD
osheet.getCellRangeByName("B1").CharWeight = com.sun.star.awt.FontWeight.BOLD
osheet.getCellRangeByName("C1").CharWeight = com.sun.star.awt.FontWeight.BOLD
osheet.getCellRangeByName("A1").charcolor = &HFF0000
osheet.getCellRangeByName("B1").charcolor = &HFF0000
osheet.getCellRangeByName("C1").charcolor = &HFF0000
' Spaltenbreite anpassen
oCol = oSheet.getColumns()
oCol.optimalWidth = true
End Sub
Gruß
Stephan
Da Du den Anker der jeweiligen Fußnoten (genauer gesagt wohl den Anker (Anchor) des Fußnotenankers (ein Feld)) bereits kennst ist das einfach:
-erzeuge einen Textcursor
-Springe mit dem Textcursor zum jeweiligen Anker (ohne zu markieren)
-springe nun zum Anfang des aktuellen Absatzes ohne zu markieren
-springe zum Ende des aktuellen Absatzes (mit Markieren)
Der String des Textcursors ist nun jeweils der gesuchte Absatztext
[code]REM ***** BASIC *****
REM Auflistung aller im Dokument vorhandenen Fußnoten
REM
Dim oDocC as Object
Dim oDocW as Object
Dim oSheet as Object
Dim oRange as Object
Sub GetFootnote
Dim mArr() as Variant
Dim oCol as Object
Dim i as Long
oDocW = ThisComponent
oFN=oDocW.Footnotes
oFNSettings = oDocW.getFootnoteSettings()
cur = ThisComponent.Text.CreateTextCursor
' Öffnen eines Calc-Dokuments
oDocC = StarDesktop.loadComponentFromURL("private:factory/scalc","_blank", 0, Array())
' Referenzierung der "Tabelle 1"
oSheet = oDocC.Sheets(0)
' Zellbereich A2:B2001 zur Dinmensionierung des Array's in das Array schreiben
mArr()=osheet.getcellrangebyposition(0,1,2,2001).getDataArray
For i = 0 To oFN.Count-1
' Spalte A
mArr(i)(0) = oFN(i).Anchor.String
Msgbox oFN(i).Anchor.String & CHR(13) & oFN(i).String
' Spalte B
mArr(i)(1) = oFN(i).String
' Spalte C
cur.gotoRange(oFN(i).Anchor, False)
cur.gotoStartofParagraph(False)
cur.gotoEndofParagraph(True)
mArr(i)(2) = cur.String '"Hier fehlt der Text des Absatzes"
Next i
' Referenz Range-Objekt (Zellbereich)
oRange = osheet.getcellrangebyposition(0,1,2,2001)
' Array in Zellbereich schreiben
oRange.setDataArray(mArr)
' Spaltenüberschrift einfügen und formatieren
osheet.getCellRangeByName("A1").String="Index"
osheet.getCellRangeByName("B1").String="Fußnoten"
osheet.getCellRangeByName("C1").String="Absatzinhalt"
osheet.getCellRangeByName("A1").CharWeight = com.sun.star.awt.FontWeight.BOLD
osheet.getCellRangeByName("B1").CharWeight = com.sun.star.awt.FontWeight.BOLD
osheet.getCellRangeByName("C1").CharWeight = com.sun.star.awt.FontWeight.BOLD
osheet.getCellRangeByName("A1").charcolor = &HFF0000
osheet.getCellRangeByName("B1").charcolor = &HFF0000
osheet.getCellRangeByName("C1").charcolor = &HFF0000
' Spaltenbreite anpassen
oCol = oSheet.getColumns()
oCol.optimalWidth = true
End Sub[/code]
Gruß
Stephan