Seite 1 von 1
Textbereiche unterscheiden?
Verfasst: Mo, 12.11.2018 10:21
von Stephan
Hallo,
mit:
erreiche ich alle Textbereiche in einem Writerdokument.
Wie unterscheide ich dabei die Bereiche die über Einfügen-Bereich eingefügt wurden, von sonstigen Bereichen? z.B. ist ein Inhaltsverzeichnis ein sonstiger Bereich, ich weiß nicht was sonst noch alles.
Anmerkung:
Um das nur über Namen zu unterscheiden, müsste ich zumindest alle infrage kommenden Textbereichsnamen kennen, gleichzeitig sind die Namen (z.B. "Inhaltsverzeichnis1") wohl anhängig von der Lokalisierung, mithin kein zuverlässiges Kriterium. Aber welche Eigenschaft könnte ich sonsdt zur Prüfung heranziehen?
Gruß
Stephan
Re: Textbereiche unterscheiden?
Verfasst: Mo, 12.11.2018 18:17
von F3K Total
Hallo Stephan,
habe mal versucht ein Unterscheidungsmerkmal zu finden, indem ich die Eigenschaften der Bereiche per
XRAY-Difference-Checker miteinander verglichen habe.
Die Verzeichnisse haben die Eigenschaft
.GlobalDocumentSections, die aber wiederum
.ChildSections ohne diese Eigenschaft haben können.
Mit folgendem Makro fange ich eine Ebene der Childsections ab, finde damit die "Sonstigen Bereiche", alle anderen müssten dann die eingefügten sein.
Ohne Gewähr.
Code: Alles auswählen
Sub get_GlobalDocumentSections
dim sNames(0) as String
oSections = thisComponent.TextSections
nCounter = 0
for i = 0 to oSections.count - 1
oSection = oSections.getbyIndex(i)
if oSection.IsGlobalDocumentSection then
redim Preserve sNames(nCounter)
sNames(nCounter) = oSection.Name
ncounter = ncounter + 1
if not isEmpty (oSection.ChildSections) then
for j = 0 to Ubound(oSection.ChildSections)
redim Preserve sNames(nCounter)
oChildSection = oSection.ChildSections(j)
sNames(nCounter) = oChildSection.Name
ncounter = ncounter + 1
next j
endif
endif
next i
sText = "Die folgenden Bereiche sind ""sonstige Bereiche""" +chr(10)+chr(10)+Join(sNames,(","+chr(10))
MSGBOX (sText,64,"Auswertung der Bereiche")
End Sub
Gruß R
Re: Textbereiche unterscheiden?
Verfasst: Di, 13.11.2018 08:34
von Stephan
Danke für Deine Mühe. Ich muss mir das zunächst anschauen und gebe Rückmeldung, sobald ich das getan habe.
Gruß
Stephan
Re: Textbereiche unterscheiden?
Verfasst: Do, 15.11.2018 21:11
von Stephan
Danke, das funktioniert prima.
Allerdings stoße ich auf meine eigene Unfähigkeit an einer Stelle wo ich das garnicht glauben kann keine Lösung zu finden. Derzeitig erzeuge ich zuerst das komplette Array mit allen Namen der unerwünschten Bereiche:
Code: Alles auswählen
Dim sNames(0) as String
Sub get_GlobalDocumentSections()
Dim oSections
Dim oSection
Dim oChildSection
Dim ncounter
oSections = thisComponent.TextSections
nCounter = 0
for i = 0 to oSections.count - 1
oSection = oSections.getbyIndex(i)
if oSection.IsGlobalDocumentSection then
redim Preserve sNames(nCounter)
sNames(nCounter) = oSection.Name
ncounter = ncounter + 1
if not isEmpty (oSection.ChildSections) then
for j = 0 to Ubound(oSection.ChildSections)
redim Preserve sNames(nCounter)
oChildSection = oSection.ChildSections(j)
sNames(nCounter) = oChildSection.Name
ncounter = ncounter + 1
next j
endif
endif
next i
End Sub
Sub Main2()
get_GlobalDocumentSections()
tc = ThisComponent
For i = 0 To tc.getTextSections.Count-1
j = tc.getTextSections.getByIndex(i)
Select Case Left(j.Name, 3)
Case "LP1"
'...
Case "LP2"
'...
Case Else
ll = 0
For l = 0 To UBOUND(sNames)
If j.Name = sNames(l) Then
ll = 1
Exit For
End If
Next l
If ll = 0 Then
'...
End If
End Select
Next i
End Sub
der Grund das zu tun ist aber nur, weil ich es nicht hinbekomme die Prüfung direkt bei "Case Else" durchzuführen ohne vorher das Array aller Namen der unerwünschten Bereiche erzeugt zu haben.
Vielleicht hätte da noch jemand einen Anstoß, denn ich ärgere mich das nicht hinzubekommen.
Gruß
Stephan