У меня есть документ Word, который содержит комментарии.Я написал скрипт для извлечения в Excel:
- Номер комментария
- Номер страницы
- Первый инициал комментатора
- Фамилия комментатора
- Дата написания комментария
- Фактический комментарий
Проблема, которую я не могу понять, заключается в том, что мне нужно также извлечь номер заголовка и текст этого заголовка,Мне нужен седьмой столбец для заголовка, в котором находится комментарий. Например, допустим, у меня был комментарий в разделе, озаглавленном «4.1 Это заголовок».Мне нужно извлечь номер заголовка (4.1) и текст заголовка (это заголовок) вместе с соответствующим комментарием.
Для создания заголовков я использовал функцию «Заголовки» в Word на вкладке «Главная» ленты в разделе «Стили».
Вот что я написал до сих пор:
Sub Export_Comments()
' Purpose: Search for comments in any text that's been pasted into
' this document, then export them into a new Excel spreadsheet.
' Requires reference to Microsoft Excel 15.0 Object Library in VBA,
' which should already be saved with as part of the structure of
' this .docm file.
Dim bResponse As Integer
' Exit routine if no comments have been found.
If ActiveDocument.Comments.Count = 0 Then
MsgBox ("No comments found in this document")
Exit Sub
Else
bResponse = MsgBox("Do you want to export all comments to an Excel worksheet?", _
vbYesNo, "Confirm Comment Export")
If bResponse = 7 Then Exit Sub
End If
' Create a object to hold the contents of the
' current document and its text. (Shorthand
' for the ActiveDocument object.
Dim wDoc As Document
Set wDoc = ActiveDocument
' Create objects to help open Excel and create
' a new workbook behind the scenes.
Dim xlApp As Excel.Application
Dim xlWB As Excel.Workbook
Dim i As Integer
Dim oComment As Comment 'Comment object
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
' Create a new Workbook. Shouldn't interfere with
' other Workbooks that are already open. Will have
' at least one worksheet by default.
Set xlWB = xlApp.Workbooks.Add
With xlWB.Worksheets(1).Range("A1")
' Create headers for the comment information
.Offset(0, 0) = "Comment Number"
.Offset(0, 1) = "Page Number"
.Offset(0, 2) = "Reviewer Initials"
.Offset(0, 3) = "Reviewer Name"
.Offset(0, 4) = "Date Written"
.Offset(0, 5) = "Comment Text"
' Export the actual comments information
For i = 1 To wDoc.Comments.Count
Set oComment = wDoc.Comments(i)
.Offset(i, 0) = oComment.Index 'Comment Number
.Offset(i, 1) = oComment.Reference.Information(wdActiveEndAdjustedPageNumber) 'Page Number
.Offset(i, 2) = oComment.Initial 'Author Initials
.Offset(i, 3) = oComment.Author 'Author Name
.Offset(i, 4) = Format(oComment.Date, "mm/dd/yyyy") 'Date of Comment
.Offset(i, 5) = oComment.Range 'Actual Comment
Next i
End With
' Make the Excel workbook visible
xlApp.Visible = True
' Clean up our objects
Set oComment = Nothing
Set xlWB = Nothing
Set xlApp = Nothing
End Sub