Страница 1 из 2
Объединение файлов WORD скриптом/макросом
Добавлено: Чт июн 11, 2015 08:49
ACKET
Обыскал все анналы паутины и, честно говоря, нашёл очень мало информации по этой теме.
Существует возможность средствами самого WORD склеивать несколько файлов, но у меня задача стоит о склейке более 2000 2х страничных документов, а в WORDe есть ограничение - объединяется только 114 файлов, где оно снимается не понятно. Стал искать другие средства, одно из которых скрипт внутри самого ворда:
Код: Выделить всё
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, но сам в этом не силён, был бы благодарен за оказанную помощь!
Добавлено: Пт июн 12, 2015 10:31
Flasher
Можно, конечно, попробовать, но боюсь убить кучу времени на отладку. Для 2003 ещё можно
ковырнуть, но вот дальше...
А так можно ещё
платничек попробовать:
Код: Выделить всё
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
этим:
Код: Выделить всё
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# предлагается.
Добавлено: Пт июн 12, 2015 19:12
Моторокер
Если всё есть родное в программе, внешний инструмент вряд ли сделает лучше.
Возможно, у файлов разные параметры страницы или раздела. Возможно, поможет вставка разрыва раздела. Но это уже не Тотал.
Добавлено: Пт июн 12, 2015 19:33
Flasher
Внешние программы также работают с объектной моделью MS Word, поэтому сделать это лучше, чем простенький макрос, они как раз таки в состоянии. Иначе смысл было их платными делать? Не говоря уже о вышесказанном внутреннем ограничении.
К сведению, вставка разрыва в обеих кнопках задействована.
Добавлено: Пт июн 12, 2015 19:51
ACKET
Платный сам по себе клеит правильно, без нарушения структуры, но в коммандере работать не хочет в указанном виде, пишет файл не найден... Вставка разрыва в платной это -k

Добавлено: Пт июн 12, 2015 19:58
Flasher
ACKET
А как насчёт начать с того, что речь о первом из предложенных вариантов?
-k - это сохранение исходного форматирования, за разрыв отвечает -i.
Файл не найден пишет ТС или утилита?
Ага, вижу. Так коды кнопки вставляются копипастом, а не вручную, отсюда и ошибки.

Добавлено: Пт июн 12, 2015 20:02
ACKET
сорри, конечно i просто мне и k актуально тоже. Пути указаны верно, всё одно ругается
Добавлено: Пт июн 12, 2015 20:04
Flasher
Я же не зря про копипаст пишу и вижу ошибку невооружённым глазом.
Между %P и %S никакого пробела в моём коде нет. Да и не лишним было бы использовать именно %T вместо d:\temp\27\Print\ дабы соответствовать названию кнопки.
Добавлено: Пт июн 12, 2015 20:11
ACKET
Всё верно, я пробел уже руками вставлял... ни в исходном виде ввёдённом руками, ни в том, что на скрине не хочет выделенные файлы на одной панели перекинуть в суммарный файл на другой

Добавлено: Пт июн 12, 2015 20:15
Flasher
Повторю вопрос:
Flasher писал(а):Файл не найден пишет ТС или утилита?
Если по-русски, то - ТС, а значит, путь таки неверен.
Коды кнопок тут принято вставлять в теге
Код: Выделить всё
, а не скриншотом. Я, например, так не могу разобрать, есть ли в пути в утилите первая кавычка.
Добавлено: Пт июн 12, 2015 20:22
ACKET
файл не найден... по-русски... но путь то верный! и иконку с того же пути из файла программы берёт... может не правильно из переменных пути берёт?
Исправлюсь... Да кавычка есть, просто не входит...
Добавлено: Пт июн 12, 2015 20:23
Flasher
Ещё раз см. про кавычку.
Добавлено: Пт июн 12, 2015 20:24
ACKET
да, есть кавычка, просто не видно её...
Добавлено: Пт июн 12, 2015 20:32
Flasher
Мда, странно. Если оставить в строке команды только wordmerge.exe, то что покажет?
И ещё - сколько файлов выделяется при тестах?
Добавлено: Пт июн 12, 2015 20:46
ACKET
без изменений, с админ правами запуск кнопки сработал, хотя никаких запретов вроде нет...
Один минус - при склеивании берёт номера файлов не по порядку... Я пока не знаю, насколько это важно при конвертовании будет, но лучше бы сохранять последовательность от 0001 к 9999