Обратились диспетчеры:
- Почему в формуляре (вордовский документ), который они заполняют, некоторые строки отображаются "справа-налево" ?
Проверил, не врут.
Понятно, в тексте есть управляющие коды. Какие?
Дело осложняется тем, что документ защищен паролем от редактирования (можно только заполнять поля формы).
Пришлось взломать пароль,
Затем нашел и при помощи HEX-редактора определил управляющий код.
Осталось лишь исправить около трехсот документов...
Сразу подумалось о пакетной обработке.
В итоге был написан такой VBA-скрипт:
Sub DocCorrection()
Set WordObj = CreateObject("Word.Application")
strPassword = "1234567890"
MyPath = "C:\Users\SuperAdmin\Desktop\BDL\"
iFileName = Dir(MyPath)
Do While iFileName <> ""
Set WordDoc = WordObj.Documents.Open(MyPath + iFileName)
WordObj.Visible = False
; снимаю защиту файла
If WordDoc.ProtectionType <> wdNoProtection Then
WordDoc.Unprotect Password:=strPassword
End If
; убираю управляющий код "right to Left override"
WordDoc.Content.Find.Execute _
FindText:=ChrW(&H202E), ReplaceWith:="", Replace:=wdReplaceAll
; восстанавливаю защиту файла
If WordDoc.ProtectionType = wdNoProtection Then
WordDoc.Protect _
Type:=wdAllowOnlyFormFields, NoReset:=True, Password:=strPassword
End If
; сохраняю изменения
WordObj.Documents(iFileName).SaveAs FileFormat:=wdFormatDocumentDefault
WordObj.Documents(iFileName).Close SaveChanges:=True
iFileName = Dir
Loop
WordObj.Quit
Set WordDoc = Nothing
Set WordObj = Nothing
End Sub
На исправление потребовалось менее минуты. На написание и отладку скрипта - несколько часов.