Aktuelle Seite:
/vba/vbakommentare.htm
Letzte Änderung: 24.06.2006

Getestet unter Word2000Getestet unter WordXP  
Beispiel anzeigen
Makro/Datei speichern
Print

Fügt man in ein Dokument einen Kommentar ein, wird dieser folgendermaßen als verborgener Text in den Text eingefügt:

Text[Initialien+LaufNr]

Anschließend kann man den Kommentar in dem Kommentarbereich eingeben.

Über die Eigenschaften des Comment-Objektes lassen sich der Autor, die Initialen, sowie der Kommentartext eines Kommentares auslesen.
Die Seiteninformation kann über die Information-Eigenschaft des Kommentarbereiches ermittelt werden.

Sub InfoOfComment()  
Dim oDoc As Document 
Dim msg As String, ret As Integer 
Set oDoc = ActiveDocument
Dim strComment As Comment
For Each strComment In oDoc.Comments
  With strComment
    msg = "Aktueller Kommentar: [" & .Initial & .Index & "]" _
      & vbCrLf & "Von:" & vbTab & .Author _
      & vbCrLf & "Text:" & vbTab & .Range.Text _
      & vbCrLf & "Kapitel:" & vbTab & fkt_GetCommentHeading(strComment) _
      & vbCrLf & "Seite:" & vbTab & .Scope.Information(wdActiveEndPageNumber) 
    ret = MsgBox(msg & vbCrLf & vbCrLf & "Nächster Kommentar?", vbInformation + vbYesNo, "Kommentar-Infos") 
    If ret = vbNo Then Exit For 
  End With 
Next 
End Sub 

Um zusätzlich die Kapitelüberschrift des Kapitels zu ermitteln, in dem der Kommentar eingefügt wurde, kann man eine Besonderheit der Textmarken verwenden:
über die vordefinierte Textmarke \HeadingLevel erhält man Informationen über die Überschrift, die die Markierung (hier den Kommentar) enthält.

Diese Information wird in der Funktion fkt_GetCommentHeading ermittelt. Dabei wird überprüft, ob eine Überschriftennummerierung verwendet wird und diese ggf. mitermittelt.
Als Rückgabewert liefert die Funktion dann den Überschriftentext und ggf. die Nummerierung.

Function fkt_GetCommentHeading(ByRef myCom As Comment) As String  
Dim mysty As Style
Dim rng As Range 
Dim strHeading As String 
With myCom
  .Scope.Select
  Set rng = .Range.Parent.Bookmarks("\HeadingLevel").Range
  strHeading = Left(rng.Paragraphs(1).Range.Text, Len(rng.Paragraphs(1).Range.Text) - 1) 
  If rng.Paragraphs(1).Range.ListFormat.ListType = wdListNoNumbering Then 
    fkt_GetCommentHeading = strHeading & " (Ebene " & _
      rng.Paragraphs(1).OutlineLevel & ")"
  Else 
    fkt_GetCommentHeading = rng.ListFormat.ListString & " " & strHeading & " (Ebene " & _
      rng.Paragraphs(1).OutlineLevel & ")"
  End If 
End With 
End Function 

 www.chf-online.de/vba/vbakommentare.htm © 2001-11 Christian Freßdorf (Zaphod-Systems)