• Авторизация


Исправление формуляра 03-08-2013 23:48 к комментариям - к полной версии - понравилось!


[256x256]

 Обратились диспетчеры: 

 - Почему в формуляре (вордовский документ), который они заполняют, некоторые строки отображаются "справа-налево" ?

Проверил, не врут.

Понятно, в тексте есть управляющие коды. Какие?

Дело осложняется тем, что документ защищен паролем от редактирования (можно только заполнять поля формы).

Пришлось взломать пароль,

Затем нашел и при помощи 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

 

На исправление потребовалось менее минуты. На написание и отладку скрипта - несколько часов.

вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Исправление формуляра | a1addin - Письма себе | Лента друзей a1addin / Полная версия Добавить в друзья Страницы: раньше»