Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/50: Рейтинг темы: голосов - 50, средняя оценка - 4.88
2 / 2 / 0
Регистрация: 17.04.2011
Сообщений: 11
1

Копирование текста Word

17.04.2011, 23:23. Показов 9423. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, нужна помощь в решении следующей задачи:
Нужно скопировать достаточно большой фрагмент текста из вордовского документа А вордовский документ Б, не потеряв форматирования. В копируемых фрагментах текста присутствуют списки, но нет таблиц.
Должны быть определены хотябы места вставки(т.е. копирование всего документа А в определенное место в документе Б), в идеале конечно хотелось бы определить и места копирования. К примеру:
Найти и копировать из документа А ВСЕ что заключено между тегами [Copy][/Copy] в документ Б в место заключенное между тегами [Paste][/Paste] с заменой тэгов вставки.
Но в реализации я вас не ограничиваю если есть другие варианты с удовольсвием приму и их.
Помогите пожалуйста, заранее спасибо

Добавлено через 11 часов 21 минуту
ап, ---...---

Добавлено через 4 минуты
Вот почва для размышлений: код копирует весь документ 1 в определенное место в документе 2, но единственная проблема в том что он полностью заменяет весь текст в документе 2 на весь текст из документа 1.
А нужно чтобы одно ключевое слово из документа 2 заменилось на весь текст документа 1...
Надеюсь вы меня поняли

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Function FindAndReplace(ADocument1, ADocument2:TFileName; Str:string):boolean;
  Var WordDoc: OleVariant;
  const wdReplaceAll=1;
  Begin
   WordDoc:=CreateOLEObject('Word.Application');
   WordDoc.Visible:=false;
   WordDoc.Documents.Add(ADocument1);
   WordDoc.Documents.Add(ADocument2);
   WordDoc.Documents.Item(2).Activate;
  WordDoc.Selection.Find.MatchSoundsLike := False;
  WordDoc.Selection.Find.MatchAllWordForms := False;
  WordDoc.Selection.Find.MatchWholeWord := False;
  WordDoc.Selection.Find.Format := False;
  WordDoc.Selection.Find.Forward := True;
  WordDoc.Selection.Find.ClearFormatting;
  WordDoc.Selection.Find.Text:=Str;
  WordDoc.Selection.Find.Replacement.Text:=WordDoc.Documents.Item(1).Range.Text;
  FindAndReplace:=WordDoc.Selection.Find.Execute(Replace:=wdReplaceAll);
  WordDoc.ActiveDocument.SaveAs(ADocument2);
   WordDoc.Quit;
   WordDoc:=Unassigned;
  End;
procedure TForm1.Button1Click(Sender: TObject);
begin
FindAndReplace('C:/1.doc','C:/2.doc', '#paste');
end;
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2011, 23:23
Ответы с готовыми решениями:

При добавлении текста в Word часть добавляемого текста сделать жирным
Здравствуйте. Добавляю текст в Word операторами (переменные CalcValue, Str: String формируются...

Выборка из текста (файл ms word) предложений и копирование в новый файл (ms word) с определенным форматом
Добрый день. Очень нужна помощь в создании макроса. Есть файлы в которых содержатся вопросы и...

Копирование текста в Word
Всем привет, имеется некоторый текст в Word(первый текст). Мне нужно провести над ним некоторые...

Копирование текста программы в Word
Использую в качестве компилятора DEV-CPP и возникла такая проблема: Когда я копирую текст...

7
2 / 2 / 0
Регистрация: 17.04.2011
Сообщений: 11
19.04.2011, 17:57  [ТС] 2
---up---
0
2 / 2 / 0
Регистрация: 17.04.2011
Сообщений: 11
21.04.2011, 11:46  [ТС] 3
up--------

Добавлено через 17 часов 28 минут
----------------up
0
28 / 28 / 3
Регистрация: 14.04.2011
Сообщений: 101
21.04.2011, 15:38 4
Selection.Copy
0
2 / 2 / 0
Регистрация: 17.04.2011
Сообщений: 11
21.04.2011, 17:52  [ТС] 5
а как выделить нужный фрагмент текста?
0
28 / 28 / 3
Регистрация: 14.04.2011
Сообщений: 101
21.04.2011, 18:35 6
Selection.WholeStory - это весь текст. На будущее, запусти в ворде макрос на запись, сделай нужные действия, останови и посмотри код в редакторе VisialBasic.
0
2 / 2 / 0
Регистрация: 17.04.2011
Сообщений: 11
22.04.2011, 14:01  [ТС] 7
up---

Добавлено через 1 час 54 минуты
Задача решена.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Процедура
Uses ComObj;
Function FindAndReplace(ADocument1, ADocument2:TFileName; S1, S2:string):boolean;
  Var WordDoc, FStart, FEnd, a, b: OleVariant;
  i,DocLen:longint;
  Begin
  Result:=false;
   FStart:=0;
   FEnd:=0;
   WordDoc:=CreateOLEObject('Word.Application');
   WordDoc.Visible:=false;
   WordDoc.Documents.Add(ADocument1);
   WordDoc.Documents.Add(ADocument2);
   WordDoc.Documents.Item(2).Activate;
  DocLen:=Length(WordDoc.Documents.Item(2).Range.Text);
    For i:=0 to DocLen-2 do begin
    a:=i; b:=i+2;
    if (WordDoc.Documents.Item(2).Range(a,b).Text=S1) then FStart:=i+2
    else if (WordDoc.Documents.Item(2).Range(a,b).Text=S2) then FEnd:=i;
    end;
  if (FStart=0) or (FEnd=0) then showmessage('Ошибка') else
 begin
  WordDoc.Documents.Item(2).Range(FStart, FEnd).Select;
  WordDoc.Selection.Copy;
 end;
//====================================================================
   FStart:=0;
   FEnd:=0;
   DocLen:=Length(WordDoc.Documents.Item(1).Range.Text);
  For i:=0 to DocLen-2 do begin
    a:=i; b:=i+2;
    if (WordDoc.Documents.Item(1).Range(a,b).Text=S1) then FStart:=i
    else if (WordDoc.Documents.Item(1).Range(a,b).Text=S2) then FEnd:=i+2;
    end;
 
 if (FStart=0) or (FEnd=0) then showmessage('Ошибка') else
 begin
  WordDoc.Documents.Item(1).Range(FStart, FEnd).Select;
  WordDoc.Selection.Paste;
  Result:=true;
 end;
  WordDoc.Documents.Item(1).Activate;
  WordDoc.ActiveDocument.SaveAs(ADocument2);
   WordDoc.Quit;
   WordDoc:=Unassigned;
  End;
 
//Пример вызова
procedure TForm1.Button1Click(Sender: TObject);
begin
FindAndReplace('C:/1.doc','C:/2.doc', '<#', '#>');
end;
Это действие найдет в документе 1.doc текст заключенный между тегами <# #> и поместит его в документ 2.doc между теми же тегами <# #>. После использования теги во втором документе затираются

Добавлено через 1 минуту
вставка происходит через буфер обмена =>
1.до использовании процедуры лучше в него ничего ценного не копировать
2. между искомыми тегами могут быть заключены любые объекты помимо текста (рисунки, таблицы ...)
1
9 / 9 / 1
Регистрация: 03.12.2008
Сообщений: 556
12.05.2012, 14:06 8
Да, она хорошо работает, а как сделать чтобы еще и математические формулы копировались?
0
12.05.2012, 14:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2012, 14:06
Помогаю со студенческими работами здесь

Копирование текста в Word из Excel
Необходимо чтобы при нажатии на кнопку инициализировалось следующее действие. Макром пробегает по...

Копирование текста из Word макросом
Всем привет. Если не сложно, помогите пожалуйста решить проблему. Появилась задача копирования...

Копирование текста с паскаля на word
Подскажите пожалуйста, можно ли текст набранный с паскаля переместить в word и обратно

Копирование текста из Microsoft Office Word
Добрый день! Подскажите, пожалуйста, как можно скопировать текст из документа Microsoft Office...

Парсинг и копирование текста из Word в Excel
Приветствую! Нужна помощь.. Пытаюсь разобраться с такой задачей: есть куча текста в WORD, хочу...

Копирование текста между документами Word
' &quot;Пусть надо скопировать текст из текущего файла в новый документ, ' с начала первой страницы, до...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru