Главная страница
    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
2-1317554526
lesstab
2011-10-02 15:22
2012.01.08
DBGrid.SelectedRows.ПередайВонТомуГриду


15-1316107383
Kerk
2011-09-15 21:23
2012.01.08
Вот так Google продвигает свой поиск в России


15-1312890604
БарЛог
2011-08-09 15:50
2012.01.08
Задача: стальной шар радиусом R падает в воду


2-1317158516
я
2011-09-28 01:21
2012.01.08
Преобразование форматов TBitmap


2-1317454345
vgvolk
2011-10-01 11:32
2012.01.08
Разворачивание окна автоматически





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский