При оформлении документов встречаются требования многих руководителей на перенос на следующую строку слов, которые состоят из двух или трех букв, таких как: он, на, при, в, из...
Это конечно не относится к правилам грамматики и правилам переноса текста в русском языке, но требования встречаются и ничего с этим не поделаешь. Приходится после того, как подготовил документ еще несколько раз перечитывать его и построчно переносить указанные слова на новые строки.
Хорошо, если документ состоит из одного листа, а если их несколько? А может и несколько десятков?
Вот здесь и может понадобиться программирование на VBA. С помощью нескольких десятков строк кода, можно сэкономить очень много времени.
Поэтому, Вашему вниманию предлагается следующий код, с пояснениями, который поможет вам сэкономить время на подготовку служебной переписки и с пользой потратить его на что-нибудь более полезное и приятное.
Вживую как выполняется этот код, можно посмотреть на видео.
Сам код, представлен ниже. Вам нужно просто скопировать его и вставить в шаблон документа, и начать использовать его
Sub перенос_коротких_строк()
Dim doc As Document
Dim r As Range
Dim i As Long
Dim j As Long
Set doc = ActiveDocument
With doc.Range
With .Find
.Text = Chr(11)
.Replacement.Text = " "
.Forward = True
End With
.Find.Execute Replace:=wdReplaceAll
End With
Do While i <= doc.ComputeStatistics(wdStatisticLines)
Debug.Print doc.ComputeStatistics(wdStatisticLines)
With Selection
.GoTo What:=wdGoToLine, Which:=wdGoToAbsolute, Count:=i
.Expand Unit:=wdLine
End With
Set r = Selection.Range
Debug.Print r.Words(r.Words.Count)
r.Words(r.Words.Count).Select
Select Case Len(r.Words(r.Words.Count))
Case 1
Select Case Asc(r.Words(r.Words.Count))
Case 32, 37, 40, 41, 150, 45, 46, 13, 44, 58, 59, 33
Case Else
r.Words(r.Words.Count).InsertBefore Chr(11)
End Select
Case Is <= 4
Select Case r.Words(r.Words.Count)
Case ", ", ". ", ": ", "; ", " пр.", "., "
Case Else
r.Words(r.Words.Count).InsertBefore Chr(11)
End Select
End Select
i = i + 1
Loop
End Sub