Reviews und das Exportieren von Word-Kommentaren

Einführung

Eine robuste technische Lösung auszuliefern, bedingt nicht nur die Fähigkeit eine gute Lösung in die Realität umzusetzen, sondern ebenfalls eine Anzahl von notwendigen Dokumentationen zu erstellen. Dazu gehören die Lösungskonzepte, die Schulungsunterlagen und Installationsdokumentationen. Nach dem die Herausforderung der Dokumentenerstellung gemeistert wurde, muss das Resultat bezüglich Qualität und Inhalt geprüft werden. Dies findet vielfach in Form eines Reviews statt. Ein möglicher Ablauf für einen solchen Review kann wie folgt aussehen:

  1. Das Dokument wurde erstellt und auf dem itsystems Extranet publiziert (Version 0.9)
  2. Die Reviewer werden eingeladen, sich eine Kopie dieses Dokuments herunterzuladen und ihre Befunde in Form von Word-Kommentaren zu erfassen.
  3. Zu einem vereinbarten Zeitpunkt stellen sämtliche Reviewer ihre Version des Dokumentes auf dem Extranet zur Verfügung
  4. Alle Kommentare werden in einem Befundsprotokoll zusammengefasst und in einer Review-Sitzung qualifiziert (Hauptbefund, Nebenbefund etc.)
  5. Die Befunde werden nach dem Meeting bearbeitet und das Ursprungsdokument als Version 0.9.1 neu publiziert
  6. Die Reviewer dürfen innerhalb einer „Veto-Frist“ die Einarbeitung ihrer Befunde begutachten und ggf. diese nochmals beanstanden
  7. Die „Veto-Frist“ ist abgelaufen und das Dokument erhält den Status „abgenommen“ (Version 1.0)

Die Arbeitserleichterung zu diesem Prozess

Eine mühselige Arbeit ist jeweils das Konsolidieren der Befunde in ein Reviewprotokoll. Dieser Blog zeigt nun auf, wie das durch ein praktisches Word-Makro vereinfacht werden kann. Hat jeder Benutzer mit der Kommentarfunktion gearbeitet, exportiert dieses Makro diese Kommentare in ein neues Word-Dokument / oder Excel. Im Resultat entsteht für jeden Befund eine Zeile mit Seitenzahl, Autor, kommentierter Text und Kommentar dazu. Der Schlüssel dazu ist ein Word-Makro von Lene Fredborg und einem mir unbekannten anderen Entwickler. Gerne beschreibe ich, wie diese Makros „installiert“ werden und hoffe, dass sie dem Leser dieses Blogs viel Nutzen stiften.

Installation

1. Öffne Word. Im Ribbon unter View, wähle „View Makros“

Word Ribbon Makros

2. Wähle einen Namen, wähle das Normal.dotm und klicke auf Create

Macros Review Tools

3. Der Visual Basic Editor startet. Hier wird nun der unten stehende Makro Code eingefügt. Alles Bestehende in „NewMacros“ soll überschrieben werden.

Microsoft Visual Basic for Applications Screenshot

Public Sub ExtractCommentsToWord()
 ‚Macro created 2007 by Lene Fredborg, DocTools – www.thedoctools.com
‚The macro creates a new document
‚and extracts all comments from the active document
‚incl. metadata
 ‚Minor adjustments are made to the styles used
‚You may need to change the style settings and table layout to fit your needs
‚=========================
 Dim oDoc As Document
Dim oNewDoc As Document
Dim oTable As Table
Dim nCount As Long
Dim n As Long
Dim Title As String
 Title = „Extract All Comments to New Document“
Set oDoc = ActiveDocument
nCount = ActiveDocument.Comments.Count
 If nCount = 0 Then
MsgBox „The active document contains no comments.“, vbOKOnly, Title
GoTo ExitHere
Else
‚Stop if user does not click Yes
If MsgBox(„Do you want to extract all comments to a new document?“, _
vbYesNo + vbQuestion, Title) <> vbYes Then
GoTo ExitHere
End If
End If
 Application.ScreenUpdating = False
‚Create a new document for the comments, base on Normal.dot
Set oNewDoc = Documents.Add
‚Set to landscape
oNewDoc.PageSetup.Orientation = wdOrientLandscape
‚Insert a 4-column table for the comments
With oNewDoc
.Content = „“
Set oTable = .Tables.Add _
(Range:=Selection.Range, _
numrows:=nCount + 1, _
NumColumns:=5)
End With
 ‚Insert info in header – change date format as you wish
oNewDoc.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text = _
„Comments extracted from: “ & oDoc.FullName & vbCr & _
„Created by: “ & Application.UserName & vbCr & _
„Creation date: “ & Format(Date, „MMMM d, yyyy“)
 ‚Adjust the Normal style and Header style
With oNewDoc.Styles(wdStyleNormal)
.Font.Name = „Arial“
.Font.Size = 10
.ParagraphFormat.LeftIndent = 0
.ParagraphFormat.SpaceAfter = 6
End With
 With oNewDoc.Styles(wdStyleHeader)
.Font.Size = 8
.ParagraphFormat.SpaceAfter = 0
End With
 ‚Format the table appropriately
With oTable
.Range.Style = wdStyleNormal
.AllowAutoFit = False
.PreferredWidthType = wdPreferredWidthPercent
.PreferredWidth = 100
.Columns(1).PreferredWidth = 5
.Columns(2).PreferredWidth = 25
.Columns(3).PreferredWidth = 30
.Columns(4).PreferredWidth = 30
.Columns(5).PreferredWidth = 15
.Rows(1).HeadingFormat = True
End With
 ‚Insert table headings
With oTable.Rows(1)
.Range.Font.Bold = True
.Cells(1).Range.Text = „Page“
.Cells(2).Range.Text = „Comment scope“
.Cells(3).Range.Text = „Comment text“
.Cells(4).Range.Text = „Response“
.Cells(5).Range.Text = „Author“
End With
 ‚Get info from each comment from oDoc and insert in table
For n = 1 To nCount
With oTable.Rows(n + 1)
‚Page number
.Cells(1).Range.Text = _
oDoc.Comments(n).Scope.Information(wdActiveEndPageNumber)
‚The text marked by the comment
.Cells(2).Range.Text = oDoc.Comments(n).Scope
‚The comment itself
.Cells(3).Range.Text = oDoc.Comments(n).Range.Text
‚The comment author
.Cells(5).Range.Text = oDoc.Comments(n).Author
End With
Next n
 Application.ScreenUpdating = True
Application.ScreenRefresh
 oNewDoc.Activate
MsgBox nCount & “ comments found. Finished creating comments document.“, vbOKOnly, Title
 ExitHere:
Set oDoc = Nothing
Set oNewDoc = Nothing
Set oTable = Nothing
 End Sub
  Sub ExportCommentsToExcel()
‚Create in Word vba
‚TODO: set a reference to the Excel object library (Tools –> Reference –> Microsoft Excel 12.0 Object library)
 Dim xlApp As Excel.Application
Dim xlWB As Excel.Workbook
Dim i As Integer
Dim HeadingRow As Integer
HeadingRow = 3
 Dim cmtRef As Range
 Set xlApp = CreateObject(„Excel.Application“)
xlApp.Visible = True
Set xlWB = xlApp.Workbooks.Add ‚ create a new workbook
With xlWB.Worksheets(1)
‚ Create report info
.Cells(1, 1).Formula = „Reviewed document:“
 ‚ Create Heading
.Cells(HeadingRow, 1).Formula = „Index“
.Cells(HeadingRow, 2).Formula = „Page“
.Cells(HeadingRow, 3).Formula = „Line“
.Cells(HeadingRow, 4).Formula = „Commented Text“
.Cells(HeadingRow, 5).Formula = „Comment“
.Cells(HeadingRow, 6).Formula = „Reviewer“
.Cells(HeadingRow, 7).Formula = „Date“
For i = 1 To ActiveDocument.Comments.Count
.Cells(2, 1).Formula = ActiveDocument.Comments(i).Parent
.Cells(i + HeadingRow, 1).Formula = ActiveDocument.Comments(i).Index
.Cells(i + HeadingRow, 2).Formula = ActiveDocument.Comments(i).Reference.Information(wdActiveEndAdjustedPageNumber)
.Cells(i + HeadingRow, 3).Formula = ActiveDocument.Comments(i).Reference.Information(wdFirstCharacterLineNumber)
.Cells(i + HeadingRow, 4).Formula = ActiveDocument.Comments(i).Scope
.Cells(i + HeadingRow, 5).Formula = ActiveDocument.Comments(i).Range
.Cells(i + HeadingRow, 6).Formula = ActiveDocument.Comments(i).Initial
.Cells(i + HeadingRow, 7).Formula = Format(ActiveDocument.Comments(i).Date, „dd/MM/yyyy“)
 ‚ .Cells(i + 1, 3).Formula = ActiveDocument.Comments(i).Parent
‚ .Cells(i + 1, 3).Formula = ActiveDocument.Comments(i).Application
‚ .Cells(i + 1, 7).Formula = ActiveDocument.Comments(i).Author
Next i
End With
Set xlWB = Nothing
Set xlApp = Nothing
End Sub

4. Damit der Export in Excel klappt, muss noch die Referenz auf das Excel Objekt eingefügt werden
Tools –> Reference –>

References Microsoft Excel Object Library

5. Das wär’s schon gewesen. Teile den Reviewern mit, wie sie mit dem Dokument verfahren sollen und erinnere sie daran, dass sie beim Kommentieren jeweils den gesamten Text markieren, über welchen sie einen Befund erfassen wollen. Z. B. so:

Word Screenshot

6. Danach kann der Makro aufgerufen werden

Word Ribbon Makro

Ich hoffe, dass ich damit einen für mich sehr nützlichen Tipp weiterteilen kann. Versprochen, mein nächster Blog wird wieder etwas mehr mit SharePoint zu tun haben, voraussichtlich zum Thema ADFS, External Collaboration und wie ein typisches Dropbox-Szenario mit SharePoint gelöst werden kann.