Thema Datum  Von Nutzer Rating
Antwort
04.02.2022 20:57:16 Björn
NotSolved
Blau Alle Überschriften auslesen und in ein neues Dokumente kopieren
05.02.2022 05:13:31 Gast65772
NotSolved
05.02.2022 07:39:06 Björn
NotSolved
05.02.2022 16:08:27 Gast88102
NotSolved
06.02.2022 22:12:18 Björn
NotSolved
07.02.2022 00:21:19 Gast34499
NotSolved
08.02.2022 18:10:26 Björn
NotSolved
20.02.2022 19:37:52 Björn
NotSolved

Ansicht des Beitrags:
Von:
Gast65772
Datum:
05.02.2022 05:13:31
Views:
591
Rating: Antwort:
  Ja
Thema:
Alle Überschriften auslesen und in ein neues Dokumente kopieren

Könnte man vielleicht so machen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
Option Explicit
 
' Ermittelt alle Überschriften (Ebene 1-9) in diesem Word-Dokument,
' erstellt dann ein neues Dokument und fügt die Überschriften
' als Tabelle ein.
Public Sub Test()
   
  Dim colHeadings As VBA.Collection
  Dim iHeading As Long
   
  Set colHeadings = GetRangesOfHeadings(ThisDocument)
  If colHeadings.Count = 0 Then
    Call MsgBox("Es wurden keine Überschriften gefunden.", vbInformation)
    Exit Sub
  End If
   
  With Documents.Add()
    With .Tables.Add(.Content, colHeadings.Count, 1)
      For iHeading = 1 To colHeadings.Count
        .Cell(iHeading, 1).Range.Text = colHeadings(iHeading)
      Next
    End With
  End With
   
  Call MsgBox("Tabelle mit Überschriften wurde in einem neuen Word-Dokument erstellt.", vbInformation)
   
  Set colHeadings = Nothing
   
End Sub
 
' liefert eine Collection mit jenen Bereichen, in denen eine Überschrift (Ebene 1-9) steht
Private Function GetRangesOfHeadings(Document As Word.Document) As VBA.Collection
   
  Dim colHeadings As VBA.Collection
  Dim rngHeading As Word.Range
  Dim iHeading As Long
   
  Set colHeadings = New VBA.Collection
   
  For iHeading = wdStyleHeading1 To wdStyleHeading9 Step -1
    With Document.Content
      .Find.Style = iHeading
      Call .Find.Execute
      Do While .Find.Found
        Set rngHeading = ThisDocument.Range(.Start, .End)
        Call rngHeading.MoveEndWhile(vbCrLf, wdBackward)
        Call AddToCollectionSorted(colHeadings, rngHeading)
        Call .Find.Execute
      Loop
    End With
  Next
   
  Set GetRangesOfHeadings = colHeadings
  Set colHeadings = Nothing
   
End Function
 
' sortiert den Bereich von Überschriften, anhand der Position im Dokument, in die Collection ein
Private Sub AddToCollectionSorted(Collection As VBA.Collection, Range As Word.Range, Optional ByVal Start, Optional ByVal End_)
   
  If Collection.Count = 0 Then
    Call Collection.Add(Range)
    Exit Sub
  ElseIf Collection.Count = 1 Then
    If Range.Start >= Collection(1).Start Then
      Call Collection.Add(Range)
    Else
      Call Collection.Add(Range, Before:=1)
    End If
    Exit Sub
  End If
   
  If IsMissing(Start) Or CLng(Start) <= 0 Then Start = 1
  If IsMissing(End_) Or CLng(End_) > Collection.Count Then End_ = Collection.Count
   
  If End_ - Start = 0 Then
    If Range.Start >= Collection(Start).Start Then
      Call Collection.Add(Range, After:=Start)
    Else
      Call Collection.Add(Range, Before:=Start)
    End If
    Exit Sub
  End If
   
  Dim m As Long
  m = (Start + End_) \ 2
   
  If Range.Start >= Collection(m).Start Then
    Call AddToCollectionSorted(Collection, Range, m + 1, Collection.Count)
  Else
    Call AddToCollectionSorted(Collection, Range, 1, m - 1)
  End If
   
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
04.02.2022 20:57:16 Björn
NotSolved
Blau Alle Überschriften auslesen und in ein neues Dokumente kopieren
05.02.2022 05:13:31 Gast65772
NotSolved
05.02.2022 07:39:06 Björn
NotSolved
05.02.2022 16:08:27 Gast88102
NotSolved
06.02.2022 22:12:18 Björn
NotSolved
07.02.2022 00:21:19 Gast34499
NotSolved
08.02.2022 18:10:26 Björn
NotSolved
20.02.2022 19:37:52 Björn
NotSolved