Объединение файлов WORD скриптом/макросом
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2  Next  :| |:
Total Commander -> Автоматизация Total Commander

#1: Объединение файлов WORD скриптом/макросом Author: ACKET PostPosted: Thu Jun 11, 2015 09:49
    —
Обыскал все анналы паутины и, честно говоря, нашёл очень мало информации по этой теме.
Существует возможность средствами самого WORD склеивать несколько файлов, но у меня задача стоит о склейке более 2000 2х страничных документов, а в WORDe есть ограничение - объединяется только 114 файлов, где оно снимается не понятно. Стал искать другие средства, одно из которых скрипт внутри самого ворда:
Code:
Sub MergeDocs()
Dim rng As Range
Dim MainDoc As Document
Dim strFile As String
'(Change the path where your documents are residing)
Const strFolder = "d:\temp\27\Print\"
Set MainDoc = Documents.Add
'(Change file extension to .docx incase you are dealing with Word 20xx version)
strFile = Dir$(strFolder & "*.doc")
Do Until strFile = ""
Set rng = MainDoc.Range
rng.Collapse wdCollapseEnd
rng.InsertFile strFolder & strFile
strFile = Dir$()
Loop
End Sub

При этом, в ворде, всё работает, но портится структура документов - из двухстраничных получаются растянутые на 4 страницы... Подозреваю, что то же самое можно выполнить не запуская приложение, а выполняя скрипт из TotalCommander, но сам в этом не силён, был бы благодарен за оказанную помощь!

#2:  Author: FlasherLocation: Москва PostPosted: Fri Jun 12, 2015 11:31
    —
Можно, конечно, попробовать, но боюсь убить кучу времени на отладку. Для 2003 ещё можно ковырнуть, но вот дальше...
А так можно ещё платничек попробовать:
Code:
TOTALCMD#BAR#DATA
"%ProgramFiles%\MS Word Merge Tool\wordmerge.exe"
-o "%TOut.docx" -f %P%S -i
%ProgramFiles%\MS Word Merge Tool\wordmerge.exe
Склеить выделенные файлы Word в docx-получатель другой панели

C этим:
Code:
TOTALCMD#BAR#DATA
"%ProgramFiles%\Okdo Word Merger Command Line\wordmerger.exe"
-list=%L -dest="%TOut.docx" -insertbreak"
cryptui.dll,8
Склеить выделенные файлы Word (doc(x), rtf) в docx-получатель другой панели

1

Есть ещё гуишные (1, 2 (после покупки по просьбе могут выслать консольную), 3).
Тут код на C# предлагается.

#3:  Author: МоторокерLocation: г. Пермь (читается Перьмь) PostPosted: Fri Jun 12, 2015 20:12
    —
Если всё есть родное в программе, внешний инструмент вряд ли сделает лучше.
Возможно, у файлов разные параметры страницы или раздела. Возможно, поможет вставка разрыва раздела. Но это уже не Тотал.

#4:  Author: FlasherLocation: Москва PostPosted: Fri Jun 12, 2015 20:33
    —
Внешние программы также работают с объектной моделью MS Word, поэтому сделать это лучше, чем простенький макрос, они как раз таки в состоянии. Иначе смысл было их платными делать? Не говоря уже о вышесказанном внутреннем ограничении.
К сведению, вставка разрыва в обеих кнопках задействована.

#5:  Author: ACKET PostPosted: Fri Jun 12, 2015 20:51
    —
Платный сам по себе клеит правильно, без нарушения структуры, но в коммандере работать не хочет в указанном виде, пишет файл не найден... Вставка разрыва в платной это -k


Last edited by ACKET on Fri Jun 12, 2015 20:58; edited 1 time in total

#6:  Author: FlasherLocation: Москва PostPosted: Fri Jun 12, 2015 20:58
    —
ACKET
А как насчёт начать с того, что речь о первом из предложенных вариантов?
-k - это сохранение исходного форматирования, за разрыв отвечает -i.
Файл не найден пишет ТС или утилита?

Ага, вижу. Так коды кнопки вставляются копипастом, а не вручную, отсюда и ошибки. Wink

#7:  Author: ACKET PostPosted: Fri Jun 12, 2015 21:02
    —
сорри, конечно i просто мне и k актуально тоже. Пути указаны верно, всё одно ругается

#8:  Author: FlasherLocation: Москва PostPosted: Fri Jun 12, 2015 21:04
    —
Я же не зря про копипаст пишу и вижу ошибку невооружённым глазом.
Между %P и %S никакого пробела в моём коде нет. Да и не лишним было бы использовать именно %T вместо d:\temp\27\Print\ дабы соответствовать названию кнопки.

#9:  Author: ACKET PostPosted: Fri Jun 12, 2015 21:11
    —
Всё верно, я пробел уже руками вставлял... ни в исходном виде ввёдённом руками, ни в том, что на скрине не хочет выделенные файлы на одной панели перекинуть в суммарный файл на другой

#10:  Author: FlasherLocation: Москва PostPosted: Fri Jun 12, 2015 21:15
    —
Повторю вопрос:
Flasher wrote:
Файл не найден пишет ТС или утилита?
Если по-русски, то - ТС, а значит, путь таки неверен.

Коды кнопок тут принято вставлять в теге [code], а не скриншотом. Я, например, так не могу разобрать, есть ли в пути в утилите первая кавычка.

#11:  Author: ACKET PostPosted: Fri Jun 12, 2015 21:22
    —
файл не найден... по-русски... но путь то верный! и иконку с того же пути из файла программы берёт... может не правильно из переменных пути берёт?
Исправлюсь... Да кавычка есть, просто не входит...


Last edited by ACKET on Fri Jun 12, 2015 21:23; edited 1 time in total

#12:  Author: FlasherLocation: Москва PostPosted: Fri Jun 12, 2015 21:23
    —
Ещё раз см. про кавычку.

#13:  Author: ACKET PostPosted: Fri Jun 12, 2015 21:24
    —
да, есть кавычка, просто не видно её...

#14:  Author: FlasherLocation: Москва PostPosted: Fri Jun 12, 2015 21:32
    —
Мда, странно. Если оставить в строке команды только wordmerge.exe, то что покажет?
И ещё - сколько файлов выделяется при тестах?

#15:  Author: ACKET PostPosted: Fri Jun 12, 2015 21:46
    —
без изменений, с админ правами запуск кнопки сработал, хотя никаких запретов вроде нет...
Один минус - при склеивании берёт номера файлов не по порядку... Я пока не знаю, насколько это важно при конвертовании будет, но лучше бы сохранять последовательность от 0001 к 9999


Last edited by ACKET on Fri Jun 12, 2015 21:54; edited 1 time in total



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2  Next  :| |:
Page 1 of 2

Powered by phpBB © 2001, 2005 phpBB Group