Expandir comentário selecione no Microsoft Word

5

No Microsoft Word, é possível expandir a área de comentários selecionada? Significa que você especificou anteriormente um comentário, mas agora deseja expandir a seleção desse comentário.

Como um exemplo para que o comentário abaixo funcione, tive que remover o comentário e adicionar um novo. Eu preferiria apenas expandir a seleção.

    
por ahsteele 04.07.2010 / 02:13

3 respostas

2

Eu costumo apenas copiar o texto do comentário para a área de transferência, excluir o comentário e criar um novo comentário para o texto correto.

A macro a seguir automatiza isso:

Sub enlarge_comment()
 'assumes that the current selection contains just one comment!
 Dim newrange As Range
 Set newrange = Selection.Range
 Selection.Comments(1).Range.Copy       'copy text of old comment
 Selection.Comments.Add Range:=newrange 'create new comment
 Selection.Paste                        'add text to new comment
 newrange.Comments(1).Delete            'delete old comment
End Sub

Eu uso a área de transferência para ter certeza de que a formatação do comentário (como fontes diferentes) não se perde, mas não testei se há uma maneira mais fácil. O resultado é isto:

É claro que você pode querer adicionar algum tipo de tratamento de erros; se houver mais de um comentário na região selecionada, então, o que o Word considera ser o primeiro. Além disso, sua nova seleção precisa conter completamente a seleção antiga; caso contrário, Selection.Comments estará vazio e Selection.Comments(1).Range.Copy falhará.

    
por 06.09.2011 / 17:33
0

Acabei de descobrir como expand or shrink the selected comment area sem escrever uma macro ou cortando / -copiando / excluindo o comentário (No Word 10):

VÁ VISUALIZAR A VISTA . Você verá o seu comentário entre 'handles' {red brackets} com o símbolo de comentário ao lado [entre colchetes].

Para expandir / reduzir a área de comentários, INSERT (recortando e colando) O NOVO TEXTO DENTRO das alças.

Exemplo: o {N.Sea} [AB1] está frio hoje . Agora mova o texto adicional dentro da alça.

Exemplo: o {N.Sea está frio} [AB1] hoje , dessa forma você expandiu a área de comentários (se você mover o texto para fora dele, encolher).

PS: o espaço antes do} é necessário, ele não permitirá que você faça isso sem ele.

Espero que ajude

    
por 05.02.2015 / 13:32
0

Aqui está minha solução bastante completa, baseada na solução de Jonas Heidelberg, acima:

Sub ChangeCommentSpan()
    '
    'If the current selection range is larger than the comment its spans, this macro expands the document-scope
    'range of the comment to encompass the entire current selection's range.  Alternatively, if the current
    'selection range is smaller than the comment spanned by it, this macro reduces the document-scope range of
    'the comment to encompass only the current selection's range.
    '
    'AUTHOR: Peter Straton
    '
    'CREDIT: Derived from Jonas Heidelberg's solution at:
    '           https://superuser.com/questions/159765/expand-comment-select-in-microsoft-word
    '
    '*************************************************************************************************************

    Const ExpandUnits As Integer = wdWord   'Alternatively, could use wdCharacter

    Dim CheckRng
    Dim DocTextSelRng  As Range
    Dim EndBackward As Boolean
    Dim EndForward As Boolean
    Dim Forward As Boolean
    Dim OrigCmnt As Comment
    Dim MovedEndUnits As Long
    Dim MovedStartUnits As Long

    'First check whether the selection includes (overlaps onto) one and only one comment.

    With Selection
        If .Comments.Count > 1 Then
            MsgBox "The selected range includes more than one Word comment.  Unable to determine which " & _
                   "comment is to be expanded.", vbOKOnly + vbCritical, "SELECTION ERROR"
            Exit Sub
        End If

        Set DocTextSelRng = .Range.Duplicate 'Capture the current Selection range (the document-text range)
                                             'because the Selection object's range will change to be the new
                                             'comment's (internal) Text range when the new comment is added.
    End With

    'Sometimes the user fails to span the current-comment's scope range (or span the whole comment) with their
    'manual selection, resulting in the targeted comment being undetectable using the Selection object's range.
    'So check for that case using a copy of the selected range and, if necessary, progressively expand it one
    'character  at a time, alternating left and then right, until at least one overlapping comment is found.

    Set CheckRng = DocTextSelRng.Duplicate
    With CheckRng
        While .Comments.Count = 0
            If Forward Then
                If Not EndForward Then
                    MovedEndUnits = .MoveEnd(ExpandUnits, 1)
                    EndForward = (MovedEndUnits = 0)
                End If
                Forward = EndBackward
            Else
                If Not EndBackward Then
                    MovedStartUnits = .MoveStart(ExpandUnits, -1)
                    EndBackward = (MovedStartUnits = 0)
                End If
                Forward = Not EndForward
            End If

            If EndForward And EndBackward Then
                'The range was expanded to include the whole document text and no comment was found.

                MsgBox "The active document includes no Comments.", vbOKOnly + vbCritical, "NO COMMENTS FOUND"
                Exit Sub
            End If
        Wend
        Set OrigCmnt = .Comments(1)

        'Found the nearest Comment so check whether it overlaps the originally selected range.

        'IMPORANT: Start and End values are insertion-point locations, not character positions.  So the Start
        'property of a Comment object's Scope range may be the same value as the End value of the character
        'immediately to its left and the End property of a Comment Scope range may be the same value as the
        'Start value of the character immediately to its right.  Therefore, the following conditional test
        'must use "<=" and ">=", respectively, not just "<" and ">":

        If (DocTextSelRng.End <= OrigCmnt.Scope.Start) Or (DocTextSelRng.Start >= OrigCmnt.Scope.End) Then
            'The found Comment does not overlap onto the original selected range, so inform user and exit.

            MsgBox "The selected range includes no Comments.", vbOKOnly + vbCritical, "SELECTION ERROR"
            Exit Sub
        End If
    End With

    'Expand (or reduce) the comment to include all of (or only) the selected range.

    OrigCmnt.Range.Copy                             'Copy the (internal) text of the existing comment
    DocTextSelRng.Comments.Add Range:=DocTextSelRng 'Create a new comment that spans the selected document scope

    'Paste the original Comment's (internal) text and its formatting as the new Comment's (internal) text

    Selection.Paste 'NOTE: This is the now-current Selection which is the new Comment's (internal) text
                    'range (not the Comment's scope range, which spans the document-text it applies to).

    OrigCmnt.Delete  'Delete the original comment

    'Finally, close the Comments pane that was automatically opened by the Comments.Add method call, above.

    If WordBasic.ViewAnnotations = -1 Then
       WordBasic.ViewAnnotations 0
    End If
End Sub
    
por 10.04.2018 / 23:55