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

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

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

Оффлайн RipVanWinkel [?]

  • Новичок
  • *
  • Сообщений: 15
  • Репутация: 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 [?]

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

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




Онлайн Tempo [?]

  • Осваивающий
  • **
  • Сообщений: 109
  • Репутация: 25
  • Пол: Мужской
    • Награды
  • Версия 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 [?]

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

  • Автор темы
  • Репутация: 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 [?]

  • Осваивающий
  • **
  • Сообщений: 109
  • Репутация: 25
  • Пол: Мужской
    • Награды
  • Версия 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 [?]

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

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

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

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

Онлайн Tempo [?]

  • Осваивающий
  • **
  • Сообщений: 109
  • Репутация: 25
  • Пол: Мужской
    • Награды
  • Версия 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 [?]

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

  • Автор темы
  • Репутация: 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 [?]

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

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

Оффлайн RipVanWinkel [?]

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

  • Автор темы
  • Репутация: 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 [?]

  • Осваивающий
  • **
  • Сообщений: 109
  • Репутация: 25
  • Пол: Мужской
    • Награды
  • Версия 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 [?]

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

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

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

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

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

 

Похожие темы

  Тема / Автор Ответов Последний ответ
3 Ответов
5931 Просмотров
Последний ответ Январь 07, 2011, 18:59:21
от RUVATA
3 Ответов
10991 Просмотров
Последний ответ Апрель 18, 2010, 21:57:31
от snoitaleR
14 Ответов
10002 Просмотров
Последний ответ Октябрь 20, 2011, 17:18:04
от madmasles
8 Ответов
5309 Просмотров
Последний ответ Ноябрь 05, 2011, 09:37:38
от StarEdik
6 Ответов
3674 Просмотров
Последний ответ Май 07, 2012, 19:40:02
от madmasles
5 Ответов
3492 Просмотров
Последний ответ Май 12, 2012, 20:59:16
от madmasles
3 Ответов
2451 Просмотров
Последний ответ Май 31, 2012, 15:58:13
от Foley
6 Ответов
4055 Просмотров
Последний ответ Август 26, 2012, 07:26:16
от amorphyc
0 Ответов
1565 Просмотров
Последний ответ Ноябрь 07, 2012, 17:14:24
от dvds
0 Ответов
847 Просмотров
Последний ответ Декабрь 21, 2015, 17:34:13
от Sverx