Что нового

[Автоматизация] Как разделить документ word по странично в отдельные файлы

magros

Новичок
Сообщения
20
Репутация
1
Всем добрый!!
Помогите написать скрипт для разделения документа МС ВОРД (.doc) по странично в файл
Есть документ в котором "N" число страниц нужно отделить каждую страничку в отдельный файл.
Примерный алгоритм:
С начала страницы до начала следующей - 1 символ выеляется текст и копируются в только что открый файл. и так по кругу пока не закончатся страницы.

Варианты принимаются помощь приветствуется.
спс

п.с. варианты привязки к страничным разделителям (контрл+энтер) и т.д. не вариант... набирают доки не верстальщики правил не соблюдают
 

Vlasssov

Осваивающий
Сообщения
428
Репутация
25
Вопрос первый. Что вообще из себя представляет документ?
Как страницы отделены друг от друга?

Если это сплошной текст, то есть там в дебрях Visual Basic for Application такая функция:
ActiveDocument.Range.Information
Так вот с параметром wdActiveEndAdjustedPageNumber показывает, где находиться конец выделения. (selection)

С помощью вот такой конструкции, например

For i = 1 To ActiveDocument.Words.Count
Debug.Print ActiveDocument.Words(i).Text, ActiveDocument.Words(i).Information(wdActiveEndAdjustedPageNumber)
Next i

Можно посмотреть на какой странице находиться каждое слово в документе

Пример можно запустить в окне Visual Basic for Application
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
Вот нашел макрос, worda под рукой нету, так что константы и переработка под Автоит за вами :D
Код:
Sub splitter()
Dim Counter As Long, Source As Document, Target As Document
Set Source = ActiveDocument
Selection.HomeKey Unit:=wdStory
Pages = Source.BuiltInDocumentProperties(wdPropertyPages)
Counter = 0
While Counter < Pages
Counter = Counter + 1
DocName = "Page" & Format(Counter)
Source.Bookmarks("\Page").Range.Cut
Set Target = Documents.Add
Target.Range.Paste
Target.SaveAs FileName:=DocName
Target.Close
Wend

End Sub
 

Vlasssov

Осваивающий
Сообщения
428
Репутация
25
Абалдеть! У них там скрытые закладки оказывается есть!
 
Автор
M

magros

Новичок
Сообщения
20
Репутация
1
как бы VBA макрос не интересен и есть свой. интересует возможность автоита сотворить подобное

по вопросам... разделителя нет фактически это "энтер"
текст это статьи на 1 страничку
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
magros [?]
как бы VBA макрос не интересен и есть свой. интересует возможность автоита сотворить подобное
Есть несколько способов сотворить это с помощью Автоита:
1. Через объекты - открыть документ и произвести действия с ним(или тот же макрос)
Код:
$oWord = ObjCreate('Word.Application')
$Word.Visible = False
$oDocument = $Word.Documents.Open('C:\1.doc')
With $oDocument
	; действия с документом
EndWith
$oWord.Quit

2. Незнаю насколько реализуемо :D - изучить заголовки и теги Worda, считать содержимое файла в память, по тегам нарезать файл, к каждому куску файла прилепить заголовок от основного файла(возможно еще и окончание, например, RTF формату достаточно только заголовка ибо в нем хранятся все настройки цветов и шрифтов) и сохранить.
3. Может подойдет и этот - http://autoit-script.ru/index.php/topic,1335.msg9623.html#msg9623
 

Vlasssov

Осваивающий
Сообщения
428
Репутация
25
С wordом проще работать из его среды Visual basic. ИМХО
 
Верх