Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2012.01.08;
Скачать: [xml.tar.bz2];

Вниз

слияние 2-х файлов word в один   Найти похожие ветки 

 
alpp ©   (2010-06-03 20:34) [0]

Объединяю файлы, возникла следующая проблема.

uses ComObj;
......
var wordd:variant;
begin
......
  wordd:=CreateOleObject("word.application");
  wordd.documents.open(FileName := ResultFolderPath+"\main.doc", ReadOnly := False);
 wordd.documents.open(FileName := TmpFilePath1, ReadOnly := False);  // открываем файл №1
wordd.ActiveDocument.range.copy; //копируем все в файле №1
wordd.Documents.Item(2).Activate;//переключаемся на main
wordd.ActiveDocument.range.paste;//вставляем в main
wordd.Documents.Item(1).Activate;
worduk.ActiveDocument.Close(wdDoNotSaveChanges); // закрываем файл №1

wordd.documents.open(FileName := TmpFilePath2, ReadOnly := False);  // открываем файл №2
wordd.ActiveDocument.range.copy; //копируем все в файле №2
wordd.Documents.Item(2).Activate;//переключаемся на main

///????????????????????????????????????????????????????

а вот дальше вопрос - как вставить скопированное в конец main? wordd.ActiveDocument.range.paste просто заменяет скопированное ранее...


 
YurikGL ©   (2010-06-04 21:29) [1]

Перед тем, как вставлять второй кусок надо перевести курсор в конец текста...
var
 vr:olevariant;

vr:=wdStory;
w1.Selection.EndKey(vr,EmptyParam);


Пример использования тут http://www.delphimaster.ru/articles/dbtoword/index.html


 
alpp ©   (2010-06-05 10:03) [2]

видимо я что-то другое делаю неправильно, все равно в итоговом файле данные только из второго файла. Кому не сложно - скиньте пожалуйста код. Суть - N вордовских файлов объединить в один... Задача вроде тривиальная, а третий день ничего сделать не могу:(


 
oldman ©   (2010-06-05 14:09) [3]


> Суть - N вордовских файлов объединить в один...


У тебя что там, миллион файлов?
Ворд сам прекрасно добавляет файлы в конец текста.


 
YurikGL ©   (2010-06-05 16:39) [4]

Если ничего не путаю, то так

>   wordd:=CreateOleObject("word.application");
>   wordd.documents.open(FileName := ResultFolderPath+"\main.
> doc", ReadOnly := False);
>  wordd.documents.open(FileName := TmpFilePath1, ReadOnly
> := False);  // открываем файл №1
> wordd.ActiveDocument.range.copy; //копируем все в файле
> №1
> wordd.Documents.Item(2).Activate;//переключаемся на main
> wordd.ActiveDocument.range.paste;//вставляем в main
> wordd.Documents.Item(1).Activate;
> worduk.ActiveDocument.Close(wdDoNotSaveChanges); // закрываем
> файл №1
>
> wordd.documents.open(FileName := TmpFilePath2, ReadOnly
> := False);  // открываем файл №2
> wordd.ActiveDocument.range.copy; //копируем все в файле
> №2
> wordd.Documents.Item(2).Activate;//переключаемся на main
>


vr:=wdStory;
w1.Selection.EndKey(vr,EmptyParam);
wordd.ActiveDocument.range.paste;//вставляем в main

А вообще, запиши макрос, и посмотри, как он выглядит.


 
alpp ©   (2010-06-06 23:10) [5]

Спасибо, получилось так:

wordd.documents.open(FileName := ResultFolderPath+"\main.doc", ReadOnly := False);
for i:=1 to N do begin
 wordd:=CreateOleObject("word.application");
 wordd.documents.open(FileName := TmpFilePath+inttostr(i), ReadOnly := False);
 Wordd.Selection.WholeStory;
 Wordd.Selection.Copy;
 wordd.Documents.Item(ResultFolderPath+"\main.doc").Activate;
 vr:=wdStory;
 wordd.Selection.EndKey(vr,EmptyParam);
 wordd.selection.paste;
 wordd.Documents.Item(TmpFilePath+inttostr(i)).Activate;
 Wordd.ActiveDocument.Close(wdDoNotSaveChanges);
end;
wordd.Documents.Item(ResultFolderPath+"\main.doc").Activate;
Wordd.ActiveDocument.Save;
...


 
Andy BitOff ©   (2010-06-09 14:20) [6]

Я, конечно, дико извиняюсь, но почему не так:
for i:=1 to N do begin
 WordApp.Selection.EndKey(wdStory);
 WordApp.Selection.InsertFile(TmpFilePath+inttostr(i), "", False, False, False);
end;


 
Xmen   (2010-07-14 09:51) [7]

код можете на емаил отправить у меня точно такая проблема и не могу решить его до конца. ero1@mail.ru
Спасибо заранее.


 
TStas   (2010-07-14 23:44) [8]

Чтобы вставить именно в конец, надо вначале передвинуть у ворда текстовый курсор в конец. Как именно это делать, я сходу не вспомню, но всё делал имеено так:
1) Берём ворд, открываем в нём какой-то документ, содержащий длинный текст.
2) Запускаем запись макроса.
3) Нажимаем в ворде Ctrl + End
4) Останавливаем запиь макроса.
5) Переходим в редактор макроса. Вдумчиво выбираем из него едиственную строку, в которой и есть наш Ctrl + End.
6) Выбираем из него неведомые дельфям вордовские константы.
7) Пишем в редакторе макросов MsgBox(гордое_имя_константы)
8) Запускаем макрос на выполнение и пишем на бумажку значение константы.
9) В Дельфях объявляем константы с теми же именами и присваиваем им их значения.
10) Перед строкой вставки содержимого второго документа ставляем выуженную строку из вордовского бейсика.

Это нге может не работать. Я сам именно таким способом делал в ворде весьма сложные документы, пока не написал себе надстройку над вордом.


 
YurikGL ©   (2010-07-18 15:10) [9]


> надо вначале передвинуть у ворда текстовый курсор в конец.


var
vr:olevariant;
...
vr:=wdStory;
w1.Selection.EndKey(vr,EmptyParam);



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2012.01.08;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.003 c
1-1279098114
packpaul
2010-07-14 13:01
2012.01.08
Реализация null-методов класса в Delphi


1-1275582894
alpp
2010-06-03 20:34
2012.01.08
слияние 2-х файлов word в один


2-1317219642
Gu
2011-09-28 18:20
2012.01.08
события


15-1316809802
Юрий
2011-09-24 00:30
2012.01.08
С днем рождения ! 24 сентября 2011 суббота


15-1316204983
Юрий
2011-09-17 00:29
2012.01.08
С днем рождения ! 17 сентября 2011 суббота





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский