Есть такая известная проблема: после редактирования документов в ворд 2007 и последующем открытии документа в ворд 2010 и выше, часто происходит потеря пробелов между словами. Слова получаются слипшиеся, иногда несколько подряд.
Можно ли как-то макросом, с помощью механизма встроенной проверки орфографии, разделить их пробелами? Если запустить проверку орфографии вручную, ворд сам предлагает разделить их правильно.
Реально написать макрос для разделения слов в выделенном фрагменте текста или это сложно?
Проверка правописания помогает, когда два слова слиты. А когда больше - не помогает, к сожалению.
Если у вас есть связь с человеком, который работает в Word 2007, то попросите его установить обновления для офиса. Возможно эта проблема уже решилась. К тому же Word 2007 уже больше не поддерживается, значит ничего нового в нём уже не будет.
Вы хотите, чтобы хотя бы два слипшихся слова можно было разделить?
Было бы совсем не плохо, а можно еще оставшиеся слова с ошибкой цветом выделить? Не подчеркиванием самого ворд, а цветом? У меня на этом объемном файле ворд ругается и говорит, что слишком много ошибок. Как искать? Читать все замучаешься!
Я не знаю, как отличить, где слипшиеся слова, а где просто слово с ошибкой.
Поэтому макрос будет исправлять всё, а не только слипшиеся слова.
Я только за!
Но иногда могут быть какие-нибудь специальные слова, которых нет в словаре и они тоже будут исправлены.
Если будет обрабатываться выделенный фрагмент - будет самое то! Если еще выделяться цветом - то вообще удобно!
Макрос работает с выделенным фрагментом и закрашивает исправленные ошибки.
Макрос
Sub макрос()
Dim SpellErr As Range, suggest As String, i As Long
' Отключение монитора (может это ускорит макрос).
Application.ScreenUpdating = False
'1. Проверка, что выделен текст.
If Selection.Type = wdSelectionIP Then
Application.ScreenUpdating = True
MsgBox "Выделите фрагмент.", vbExclamation
Exit Sub
End If
'2. Цикл по орфографическим ошибкам, от последней к первой,
' т.к. при удалении ошибки, порядковые номера ошибок будут изменяться и будет перескок.
For i = Selection.Range.SpellingErrors.Count To 1 Step -1
'1) Присваиваем фрагменту файла, где находится ошибка, имя "SpellErr".
Set SpellErr = Selection.Range.SpellingErrors(i)
' Если ворд предлагает варианты исправлений.
If SpellErr.GetSpellingSuggestions.Count <> 0 Then
'2) Проверка, что исправление - это вставка одного пробела, а не какое-то другое исправление.
' Нам ведь надо только разделить слипшиеся слова.
' Запись исправления в переменную, чтобы ускорить макрос, чтобы
' два раза не обращаться к объекту "GetSpellingSuggestions".
suggest = SpellErr.GetSpellingSuggestions.Item(1).Name
' Удаление одного пробела.
suggest = Replace(suggest, " ", "", , 1)
' Сравнение ошибки с предлагаемой заменой, но без пробела.
If suggest = SpellErr.text Then
'3) Закраска исправленной ошибки.
SpellErr.HighlightColorIndex = wdTurquoise
'4) Исправление ошибки.
SpellErr.text = SpellErr.GetSpellingSuggestions.Item(1).Name
End If
End If
Next i
' Вкл. монитора.
Application.ScreenUpdating = True
End Sub
Спасибо большое!
Проверил: если отрывок небольшой - удобно использовать этот макрос.
Можно операцию исправления убрать и только выделять цветом - тоже удобно, ошибки лучше видно, чем волнистое подчёркивание, которое делает сам ворд.