Word宏添加注释到表失败的文档

时间:2016-05-03 22:21:04

标签: ms-word word-vba

我正在编写一个Microsoft Word VBA宏,它贯穿word文档的每个段落,并为每个段落添加注释。该评论包含该段落的样式。通过这种方式,同事可以打印带有注释的文档,并知道将来如何设置类似文档的样式。

我几乎在那里,代码将注释添加到每个段落,但在表的第一行死掉:

  

"此方法或属性不可用,因为对象引用表格行的末尾。"

以下是代码:

Sub aa_AddStylesComment()
'
' aa_AddStylesComment Macro
' Author: Me!
'

Dim strParaStyle As String
Dim cmtNewComment As Comment

'Run through word file and delete any comments with author set to a space character (that is the author of the comments added by the script)
For J = ActiveDocument.Comments.Count To 1 Step -1
  With ActiveDocument
    If .Comments(J).Author = " " Then
      .Comments(J).Delete
    End If
  End With
Next J

'Running through every paragraph
For i = 1 To ActiveDocument.Paragraphs.Count
  With ActiveDocument

    'Get paragraph style
    strParaStyle = .Paragraphs(i).Style

    'Create a new comment and collect it - then change the author to space character
    Set cmtNewComment = Selection.Comments.Add(.Range(.Paragraphs(i).Range.Words(1).Start, (.Paragraphs(i).Range.Words(1).End - 1)), strParaStyle)
    cmtNewComment.Author = " "

  End With
Next

End Sub

1 个答案:

答案 0 :(得分:1)

您可以添加一个检查表是否为表格,然后如果该段落包含单元格,则如下所示:

    If .Paragraphs(i).Range.Tables.Count = 0 Then
        Set cmtNewComment = .Paragraphs(i).Range.Comments.Add(.Range(.Paragraphs(i).Range.Words(1).Start, (.Paragraphs(i).Range.Words(1).End - 1)), strParaStyle)
        cmtNewComment.Author = " "
    ElseIf .Paragraphs(i).Range.Cells.Count > 0 Then
        Set cmtNewComment = .Paragraphs(i).Range.Comments.Add(.Range(.Paragraphs(i).Range.Words(1).Start, (.Paragraphs(i).Range.Words(1).End - 1)), strParaStyle)
        cmtNewComment.Author = " "
    End If

请注意,您不需要使用Selection,因为您永远不会更改它。