Форум: "Основная";
Текущий архив: 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.004 c