Text disappearing in text

I am currently installing some MS Word templates in Word 2010 and have encountered a problem where the text suddenly disappears at the end of the paragraph.

The problem arises only in some specific scenarios, but I have experienced that it can be recreated in different ways. However, I could not determine exactly why this is happening. Therefore, I would like to find a specific reason why the problem arises in order to avoid it.

It seems that a combination of the existence of wrapped tables, content in the page title and a specific row length can cause a problem.

To recreate the document that caused this problem, complete the following procedure:

  • Open a new document in Word 2010.
  • Copy the code below into the new module in the VBA editor.
  • Run the macro A_ReplicateScenarioto insert sample content into the document.
  • Place the cursor at the end of line 3 (the line that ends near the edge).
  • Enter a new sentence after the period, starting with a space.

The text you typed will disappear when you reach the field.

Then the text will be shown if, for example, the character is removed from the source text (i.e., from the beginning of the line) or if formatting (e.g. formatting) is performed. The Show All option in Word can also sometimes display text, but will only appear if Show All is activated. In other cases, Word will display double lines of β€œghostly” that cannot be selected.

A short video of the replicated problem can be seen here: https://youtu.be/Bqp9STDRkXc

Sub A_ReplicateScenario()

    Call SetUpNormalStyle
    Call InsertBodyTextLines
    Call InsertHeaderTextLines
    Call InsertWrappedTables
    Call SetUpMargins
    Call InsertExampleBodyText

End Sub

Sub SetUpNormalStyle()

    With ActiveDocument.Styles("Normal").Font
        .Name = "Arial"
        .Size = 10
    End With
    With ActiveDocument.Styles("Normal").ParagraphFormat
        .SpaceAfter = 0
        .LineSpacingRule = wdLineSpaceAtLeast
        .LineSpacing = 12
    End With

End Sub

Sub InsertBodyTextLines()

    For i = 1 To 4
        Selection.TypeParagraph
    Next

End Sub

Sub InsertHeaderTextLines()

    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
    End If
    If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
        ActivePane.View.Type = wdOutlineView Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    End If

    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader

    For i = 1 To 26
        Selection.TypeParagraph
    Next

    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument

End Sub

Sub InsertWrappedTables()

    Selection.HomeKey Unit:=wdStory

    ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:=1, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
    With Selection.Tables(1).Rows
        .WrapAroundText = True
        .HorizontalPosition = CentimetersToPoints(2)
        .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
        .VerticalPosition = CentimetersToPoints(4.5)
        .RelativeVerticalPosition = wdRelativeVerticalPositionPage
    End With
    Selection.Tables(1).Columns(1).PreferredWidthType = wdPreferredWidthPoints
    Selection.Tables(1).Columns(1).PreferredWidth = CentimetersToPoints(11)

    Selection.MoveDown Unit:=wdLine, Count:=1

    ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:=1, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
    With Selection.Tables(1).Rows
        .WrapAroundText = True
        .HorizontalPosition = CentimetersToPoints(10)
        .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
        .VerticalPosition = CentimetersToPoints(8)
        .RelativeVerticalPosition = wdRelativeVerticalPositionPage
    End With
    Selection.Tables(1).Columns(1).PreferredWidthType = wdPreferredWidthPoints
    Selection.Tables(1).Columns(1).PreferredWidth = CentimetersToPoints(9)

End Sub

Sub SetUpMargins()

    With ActiveDocument.PageSetup
        .TopMargin = CentimetersToPoints(3.8)
        .BottomMargin = CentimetersToPoints(2.8)
        .LeftMargin = CentimetersToPoints(2.3)
        .RightMargin = CentimetersToPoints(1.5)
    End With

End Sub

Sub InsertExampleBodyText()

    With Selection
        .HomeKey Unit:=wdStory
        .MoveDown Unit:=wdLine, Count:=3

        .TypeText Text:="Ouwouwouwoiwoiuwoiuwoiuwoiuwoiuwoiuwoiw oiwu oiwu owiu woiu woiuw oiwu owiu owiu ww."
        .TypeParagraph
        .TypeText Text:="Woiuwoiuwoiuw."
    End With

End Sub
+4
1

. Word . Word , , .

( ) None, (YMMV).

, , .

0

Source: https://habr.com/ru/post/1623420/


All Articles