Автор Тема: Объединение файлов doc  (Прочитано 973 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн RipVanWinkel [?]

  • Новичок
  • *
  • Сообщений: 31
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Объединение файлов doc
« Создано: Октябрь 03, 2017, 01:54:38 »
Версия AutoIt: 3.3.14.2

Описание:
Доброго времени суток.

В папке лежит четыре файла *.doc
В файле "Список.txt" - приведены названия файлов в определенной последовательности.

Подскажите пожалуйста - как автоитом объединить эти четыре файла doc - в один файл итог.doc (в той последовательности в какой они находятся в файле "Список.txt") ?

Примечания:
Файл Итог.doc - находится в той же папке, что и скрипт (на момент начала работы скрипта - он пустой)


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться
« Последнее редактирование: Октябрь 03, 2017, 22:50:23 от RipVanWinkel »

Русское сообщество AutoIt

Объединение файлов doc
« Отправлен: Октябрь 03, 2017, 01:54:38 »

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3999
  • Репутация: 960
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0

Скорблю и помню.




Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 401
  • Репутация: 92
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Объединение файлов doc
« Ответ #2, Отправлен: Октябрь 03, 2017, 23:56:42 »
Цитировать
объединить эти четыре файла doc - в один файл итог.doc

Пробуйте (первоначальный "Итог.doc" будет заменен)

Код: AutoIt [Выделить]
#include <Word.au3>
OnAutoItExitRegister("_OnExit")
Opt("TrayAutoPause", 0)

Global $sListPath = @ScriptDir & "\Список.txt", $sDocOutPath = @ScriptDir & "\Итог.doc", $aList, $oWord, $oDoc
$aList = FileReadToArray($sListPath)
If @error Or @extended = 1 Then Exit MsgBox(16, "Ошибка", "Ошибка списка.")
$oWord = _Word_Create(False)
If @error Then Exit MsgBox(16, "Ошибка", "Ошибка функции: _Word_Create" & @CRLF & "Error = " & @error & @CRLF & "Extended = " & @extended)
$oDoc = _Word_DocOpen($oWord, $aList[0])
If @error Then Exit MsgBox(16, "Ошибка", "Ошибка функции: _Word_DocOpen" & @CRLF & "Error = " & @error & @CRLF & "Extended = " & @extended)

For $i = 1 To UBound($aList) - 1
    With $oWord.Selection
        .EndKey(6)
        .InsertBreak(7)
        .InsertFile(@ScriptDir & "\" & $aList[$i])
    EndWith
Next

_Word_DocSaveAs($oDoc, $sDocOutPath)
If @error Then Exit MsgBox(16, "Ошибка", "Ошибка функции: _Word_DocSaveAs" & @CRLF & "Error = " & @error & @CRLF & "Extended = " & @extended)
_Word_DocClose($oDoc)
If @error Then Exit MsgBox(16, "Ошибка", "Ошибка функции: _Word_DocClose" & @CRLF & "Error = " & @error & @CRLF & "Extended = " & @extended)

Func _OnExit()
    _Word_Quit($oWord)
EndFunc   ;==>_OnExit
 


Оффлайн RipVanWinkel [?]

  • Новичок
  • *
  • Сообщений: 31

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Объединение файлов doc
« Ответ #3, Отправлен: Октябрь 04, 2017, 00:11:54 »
Tempo, что-то не работает.
Выдает ошибку: "Ошибка функции: _Word_DocOpen   Error=3..."


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться

Русское сообщество AutoIt

Re: Объединение файлов doc
« Ответ #3 Отправлен: Октябрь 04, 2017, 00:11:54 »

Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 401
  • Репутация: 92
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Объединение файлов doc
« Ответ #4, Отправлен: Октябрь 04, 2017, 00:15:56 »
Tempo, что-то не работает.
Выдает ошибку: "Ошибка функции: _Word_DocOpen   Error=3..."

Вы пробовали именно с вашим примером? Какая у вас версия ворда?


Добавлено: Октябрь 04, 2017, 00:17:07
Попробуйте так

Код: AutoIt [Выделить]
#include <Word.au3>
OnAutoItExitRegister("_OnExit")
Opt("TrayAutoPause", 0)

Global $sListPath = @ScriptDir & "\Список.txt", $sDocOutPath = @ScriptDir & "\Итог.doc", $aList, $oWord, $oDoc
$aList = FileReadToArray($sListPath)
If @error Or @extended = 1 Then Exit MsgBox(16, "Ошибка", "Ошибка списка.")
$oWord = _Word_Create(False)
If @error Then Exit MsgBox(16, "Ошибка", "Ошибка функции: _Word_Create" & @CRLF & "Error = " & @error & @CRLF & "Extended = " & @extended)
$oDoc = _Word_DocOpen($oWord, @ScriptDir & "\" & $aList[0])
If @error Then Exit MsgBox(16, "Ошибка", "Ошибка функции: _Word_DocOpen" & @CRLF & "Error = " & @error & @CRLF & "Extended = " & @extended)

For $i = 1 To UBound($aList) - 1
    With $oWord.Selection
        .EndKey(6)
        .InsertBreak(7)
        .InsertFile(@ScriptDir & "\" & $aList[$i])
    EndWith
Next

_Word_DocSaveAs($oDoc, $sDocOutPath)
If @error Then Exit MsgBox(16, "Ошибка", "Ошибка функции: _Word_DocSaveAs" & @CRLF & "Error = " & @error & @CRLF & "Extended = " & @extended)
_Word_DocClose($oDoc)
If @error Then Exit MsgBox(16, "Ошибка", "Ошибка функции: _Word_DocClose" & @CRLF & "Error = " & @error & @CRLF & "Extended = " & @extended)

Func _OnExit()
    _Word_Quit($oWord)
EndFunc   ;==>_OnExit
 

« Последнее редактирование: Октябрь 04, 2017, 00:31:33 от Tempo »

Оффлайн RipVanWinkel [?]

  • Новичок
  • *
  • Сообщений: 31

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Объединение файлов doc
« Ответ #5, Отправлен: Октябрь 04, 2017, 00:23:28 »
Tempo , так тоже не работает.
Выдает - ту же ошибку.

Использовал именно те файлы, которые приводил в первом сообщении.

Версия ворда - "Word 2003"

Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 401
  • Репутация: 92
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Объединение файлов doc
« Ответ #6, Отправлен: Октябрь 04, 2017, 00:37:03 »
Версия ворда - "Word 2003"
Тестирую на 2007 :ok:

А если так

Код: AutoIt [Выделить]
#include <Word.au3>
OnAutoItExitRegister("_OnExit")
Opt("TrayAutoPause", 0)

Global $sListPath = @ScriptDir & "\Список.txt", $sDocOutPath = @ScriptDir & "\Итог.doc", $aList, $oWord, $oDoc
$aList = FileReadToArray($sListPath)
If @error Or @extended = 1 Then Exit MsgBox(16, "Ошибка", "Ошибка списка.")
$oWord = _Word_Create(False)
If @error Then Exit MsgBox(16, "Ошибка", "Ошибка функции: _Word_Create" & @CRLF & "Error = " & @error & @CRLF & "Extended = " & @extended)
$oDoc = _Word_DocAdd($oWord)
If @error Then Exit MsgBox(16, "Ошибка", "Ошибка функции: _Word_DocAdd" & @CRLF & "Error = " & @error & @CRLF & "Extended = " & @extended)

With $oWord.Selection
    .EndKey(6)
    .InsertFile(@ScriptDir & "\" & $aList[0])
EndWith
For $i = 1 To UBound($aList) - 1
    With $oWord.Selection
        .EndKey(6)
        .InsertBreak(7)
        .InsertFile(@ScriptDir & "\" & $aList[$i])
    EndWith
Next

_Word_DocSaveAs($oDoc, $sDocOutPath)
If @error Then Exit MsgBox(16, "Ошибка", "Ошибка функции: _Word_DocSaveAs" & @CRLF & "Error = " & @error & @CRLF & "Extended = " & @extended)
_Word_DocClose($oDoc)
If @error Then Exit MsgBox(16, "Ошибка", "Ошибка функции: _Word_DocClose" & @CRLF & "Error = " & @error & @CRLF & "Extended = " & @extended)

Func _OnExit()
    _Word_Quit($oWord)
EndFunc   ;==>_OnExit
 


Оффлайн RipVanWinkel [?]

  • Новичок
  • *
  • Сообщений: 31

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Объединение файлов doc
« Ответ #7, Отправлен: Октябрь 04, 2017, 00:41:45 »
Tempo , ошибка теперь выглядит так:
"Ошибка функции: _Word_DocAdd     Error = 3 ...."


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться

Русское сообщество AutoIt

Re: Объединение файлов doc
« Ответ #7 Отправлен: Октябрь 04, 2017, 00:41:45 »

Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 401
  • Репутация: 92
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Объединение файлов doc
« Ответ #8, Отправлен: Октябрь 04, 2017, 00:45:30 »
Tempo , ошибка теперь выглядит так:
"Ошибка функции: _Word_DocAdd     Error = 3 ...."

Пока других вариантов не придумал все что могу посоветовать это попробовать 2007  :-\

Оффлайн RipVanWinkel [?]

  • Новичок
  • *
  • Сообщений: 31

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Объединение файлов doc
« Ответ #9, Отправлен: Октябрь 04, 2017, 00:49:04 »
Tempo , вы наверное какой-то сложный алгоритм имеете ввиду (поскольку используете UDF Word.au3).

Я имел ввиду - нечто более простое.

Открытие программой по умолчанию - в скрытом режиме - уже существующего файла Итог.doc
Затем поочередное открытие - в скрытом режиме - файлов из списка. И использование в каждом файле сочетаний Ctrl+A Ctrl+C Ctrl+V с переходами между этими окнами и Итог.doc.
Закрытие с сохранением.
« Последнее редактирование: Октябрь 04, 2017, 00:54:32 от RipVanWinkel »

Помечен как лучший ответ пользователем RipVanWinkel Отправлен Октябрь 04, 2017, 20:25:11

Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 401
  • Репутация: 92
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Объединение файлов doc
« Ответ #10, Отправлен: Октябрь 04, 2017, 09:46:23 »
Я имел ввиду - нечто более простое.
Для меня это звучит что вы хотите какой-то огромный костыль :( Ваш ворд попросту не открывает файлы -2147352567 это общая ошибка и все

Вот еще вариант скажете вылетит с ошибкой или нет

Код: AutoIt [Выделить]
#RequireAdmin
OnAutoItExitRegister("_OnExit")
Opt("TrayAutoPause", 0)

Global $sListPath = @ScriptDir & "\Список.txt", $sDocOutPath = @ScriptDir & "\Итог.doc", $aList, $oWord, $oDoc
$aList = FileReadToArray($sListPath)
If @error Or @extended = 1 Then Exit MsgBox(16, "Ошибка", "Ошибка списка.")

$oWord = ObjCreate("Word.Application")
$oWord.Visible = False
$oDoc = $oWord.Documents.Open(@ScriptDir & "\" & $aList[0])

For $i = 1 To UBound($aList) - 1
    With $oWord.Selection
        .EndKey(6)
        .InsertFile(@ScriptDir & "\" & $aList[$i])
    EndWith
Next

$oDoc.SaveAs($sDocOutPath)
$oDoc.Close

Func _OnExit()
    If IsObj($oWord) Then $oWord.Quit
EndFunc   ;==>_OnExit
 

« Последнее редактирование: Октябрь 04, 2017, 09:53:29 от Tempo »

Оффлайн RipVanWinkel [?]

  • Новичок
  • *
  • Сообщений: 31

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Объединение файлов doc
« Ответ #11, Отправлен: Октябрь 04, 2017, 20:24:48 »
Теперь все заработало.
Большое вам спасибо.

Вы воистину - великий программист.

Русское сообщество AutoIt

Re: Объединение файлов doc
« Ответ #11 Отправлен: Октябрь 04, 2017, 20:24:48 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
3 Ответов
6485 Просмотров
Последний ответ Январь 07, 2011, 18:59:21
от RUVATA
3 Ответов
11801 Просмотров
Последний ответ Апрель 18, 2010, 21:57:31
от snoitaleR
6 Ответов
4077 Просмотров
Последний ответ Май 07, 2012, 19:40:02
от madmasles
5 Ответов
3917 Просмотров
Последний ответ Май 12, 2012, 20:59:16
от madmasles
3 Ответов
2643 Просмотров
Последний ответ Май 31, 2012, 15:58:13
от Foley
6 Ответов
4460 Просмотров
Последний ответ Август 26, 2012, 07:26:16
от amorphyc
0 Ответов
1733 Просмотров
Последний ответ Ноябрь 07, 2012, 17:14:24
от dvds
16 Ответов
1021 Просмотров
Последний ответ Март 01, 2018, 01:18:01
от Alofa
1 Ответов
372 Просмотров
Последний ответ Февраль 09, 2018, 11:33:23
от gunter123
4 Ответов
402 Просмотров
Последний ответ Апрель 10, 2018, 19:21:57
от RipVanWinkel