Thema Datum  Von Nutzer Rating
Antwort
19.12.2023 11:46:06 Lina
NotSolved
Blau Makro für Abbildungsverzeichnis
19.12.2023 12:41:49 Gast46424
Solved

Ansicht des Beitrags:
Von:
Gast46424
Datum:
19.12.2023 12:41:49
Views:
115
Rating: Antwort:
 Nein
Thema:
Makro für Abbildungsverzeichnis

FirstIndex bezieht sich auf den Text (Input), der bei Execute übergeben wurde. Da der Input immer weiter verkürzt dem Execute übergeben wird (per Mid()), hat der FirstIndex keinen Bezug mehr zum eigentlichen Text im Dokument und das Verhalten wird "seltsam".


'in einem Modul
Option Explicit

Private Type UFigure
  Range As Word.Range
  Id As Long
  Description As String
End Type

Public Sub AbbVerzeichnis()
  
  Dim udtFigures() As UFigure
  Dim abbildungsverzeichnis As String
  Dim i As Long
  
  For i = 1 To GetListOfFigures(ActiveDocument.Content, udtFigures)
    abbildungsverzeichnis = abbildungsverzeichnis & "Abbildung " & udtFigures(i).Id & ": " & udtFigures(i).Description & vbNewLine
  Next
  
  MsgBox abbildungsverzeichnis
  
End Sub

Private Function GetListOfFigures(Range As Word.Range, ByRef Figures() As UFigure) As Long
  
  Dim matches As Object
  With CreateObject("VBScript.RegExp")
    
    .Global = True
    .MultiLine = True
    .IgnoreCase = True
    
    .Pattern = "Abb\. (\d+): ([^\r\n]+)"
    Set matches = .Execute(Range.Text)
    
  End With
  
  If matches.Count = 0 Then
'    GetListOfFigures = 0
    Exit Function
  End If
  
  Dim match As Object
  Dim i As Long
  
  ReDim Figures(1 To matches.Count)
  
  For i = 1 To matches.Count
    Set match = matches(i - 1)
    With Figures(i)
      Set .Range = Range.Document.Range(match.FirstIndex, match.FirstIndex + match.Length)
      .Id = CLng(match.SubMatches(0))
      .Description = match.SubMatches(1)
    End With
  Next
  
  GetListOfFigures = matches.Count
  
End Function

 

Grüße


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
19.12.2023 11:46:06 Lina
NotSolved
Blau Makro für Abbildungsverzeichnis
19.12.2023 12:41:49 Gast46424
Solved