При экспорте комментариев обзора Word, как вы ссылаетесь на предложение, связанное с комментарием? - PullRequest
4 голосов
/ 30 апреля 2010

Я пытаюсь экспортировать комментарии к обзору документа Word. Я хочу экспортировать выделенное предложение, за которым следовал комментарий.

Снимок экрана с изображением: http://jspeaks.com/mswordcomment.png

Я нашел код для циклического просмотра комментариев к документу, но не могу понять, как ссылаться на выбор предложений, с которым был связан комментарий.

Текущая логика:

Sub ExportComments()
    Dim s As String
    Dim cmt As Word.Comment
    Dim doc As Word.Document

    For Each cmt In ActiveDocument.Comments
        s = s & cmt.Initial & cmt.Index & "," & cmt.Range.Text & vbCr
    Next

    Set doc = Documents.Add
    doc.Range.Text = s
End Sub

Я возился с Selection.Range, однако не могу определить подходящий объект или свойство, содержащее упомянутое предложение.

Я хотел бы произвести вывод, подобный следующему (если мы используем пример на картинке выше):

Предложение: Вот еще несколько предложений, которые содержат интересные факты. Комментарий: Это интересный факт. Предложение: вот еще несколько предложений, которые содержат интересные факты. Вот еще предложения, которые содержат интересные факты. - Комментарий: это очень интересный факт

Ответы [ 2 ]

8 голосов
/ 14 мая 2010

Я нашел кого-то на другом сайте, чтобы решить этот вопрос.

Ключ к решению: cmt.Scope.FormattedText

Вот пересмотренная функция:

Sub ExportComments()
    Dim s As String
    Dim cmt As Word.Comment
    Dim doc As Word.Document

    For Each cmt In ActiveDocument.Comments
        s = s & "Text: " & cmt.Scope.FormattedText & " -> "
        s = s & "Comments: " & cmt.Initial & cmt.Index & ":" & cmt.Range.Text & vbCr
    Next

    Set doc = Documents.Add
    doc.Range.Text = s
End Sub
3 голосов
/ 20 декабря 2011

Я собрал несколько кусков кода и пришел к этому решению:

Sub CopyCommentsToExcel()
'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 = "Comment"
    .Cells(HeadingRow, 5).Formula = "Reviewer"
    .Cells(HeadingRow, 6).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).Range
        .Cells(i + HeadingRow, 5).Formula = ActiveDocument.Comments(i).Initial
        .Cells(i + HeadingRow, 6).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

Самая ценная помощь от Ответы Microsoft

...