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

Вниз

Строки в Word-е   Найти похожие ветки 

 
Tumcoat   (2003-09-15 04:30) [0]

Кто-нибудь, плиз, подскажите, как в Word-е, допустим в 10-ой строке символы с 5 по 10-ый сделать жирными?

Заранее спасибо.


 
mfender   (2003-09-15 05:16) [1]

Selection.HomeKey Unit:=wdStory
Selection.MoveDown Unit:=wdLine, Count:=10
Selection.MoveRight Unit:=wdCharacter, Count:=5
Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend
Selection.Font.Bold = wdToggle


Но тут же грабли: хорошо если это строки в понимании строки, т.е. ограниченные концом строки и находятся на этой строке. А ведь в ворде строка, которая не вмещается обычно переносится на следующую СТРОЧКУ. Так что тут вернее от абзаца плясать:

Selection.HomeKey Unit:=wdStory
Selection.MoveDown Unit:=wdParagraph, Count:=10
Selection.MoveRight Unit:=wdCharacter, Count:=5
Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend
Selection.Font.Bold = wdToggle


 
Tumcoat   (2003-09-15 05:38) [2]

Ладно, ставлю вопрос, по другому.

Есть код в Delphi5
Word:=CreateOleObject("Word.Application");
Word.Visible:=true;
Word.Documents.Add;

List:=Word.Documents.Item(1).Range;

List.Paragraphs.Item(1).Range.Text:="Заголовок";
List.Paragraphs.Add;
List.Paragraphs.Add;
List.Paragraphs.Item(3).Range.Text:="изменение символов в строке";


Вот как вот в этой 3-ей строке (или параграфе, один хрен одно и тоже :-)) ) слово "символов" выделить жирным, программно.

Есть такая функция:
WordDocument1.Range(a,b).Font.Bold:=1;
где a-номер символа "с"(первого), b-номер символа "в"(последнего), но что делать если я не знаю под каким номером будет этот символ?


 
mfender   (2003-09-15 06:09) [3]

Вот здрасьте вам.

WordDocument1.Range(Pos("символов","изменение символов в строке"),
Pos("символов","изменение символов в строке")+Length("символов")-1);

IMHO, так будет в этом частном случае. Может в количестве скобок ошибся. Попробуй.


 
Tumcoat   (2003-09-15 07:36) [4]

Ни фига не понял, ты уж извини чайника, но для меня это слишком сложно. Например, что ты подразумеваешь под этой строчкой Pos("символов","изменение символов в строке"
И что такое Pos("символов","изменение символов в строке")+Length("символов")-1?


 
mfender   (2003-09-15 07:49) [5]

Функция Pos ( Substr: string; S: string ): Integer;
Описание:
Функция находит подстроку Substr в строке S и возвращает ин-декс первого символа найденной подстроки. Если S не содержит указанную подстроку, то функция возвращает 0.


Т.е. в данном частном случае мы при помощи Pos("символов","изменение символов в строке") находим положение подстроки "символов" в строке "изменение символов в строке". Получаем 11.
Pos("символов","изменение символов в строке")+Length("символов")-1 - та же беда, только к 11 прибавляем длинну подстроки "символов"(8), чтобы определить положение в строке последнего символа (19). А так как нужен нам 18й символ, то вычитаем из этой суммы 1.


 
mfender   (2003-09-15 07:50) [6]

Короче, после всех этих манипуляций a:=11; b:=18


 
Tumcoat   (2003-09-15 08:36) [7]

при компиляции выходит ошибка:
There is no overloaded version of "Range" that can be called with these arguments
и че с этим делать не знаю.


 
mfender   (2003-09-15 08:45) [8]


> There is no overloaded version of "Range" that can be called
> with these argument

Это где такое написано?


 
Tumcoat   (2003-09-15 08:50) [9]

У меня это пишеться внизу, под кодом программы, там же где указываются и др. ошибки


 
mfender   (2003-09-15 08:54) [10]

Код покажи.


 
Tumcoat   (2003-09-15 08:56) [11]

Держи, как есть один в один:
temp:=CreateOleObject("Word.Application");
temp.Visible:=true;

WordDocument1.Paragraphs.Item(1).Range.Text:="Заголовок";
a:=2;
b:=6;
WordDocument1.Range(a,b).Font.Bold:=1;
temp.Documents.Item(1).Paragraphs.Add;
WordDocument1.Paragraphs.Item(2).Range.Text:="изменение символов в строке";
WordDocument1.Range((Pos("символов","изменение символов в строке")),
(Pos("символов","изменение символов в строке")+Length("символов")-1));


 
mfender   (2003-09-15 09:02) [12]

temp - кто такой. тип его?


 
Tumcoat   (2003-09-15 09:09) [13]

public
temp: variant;


 
Думкин   (2003-09-15 09:13) [14]

Откуда рожается WordDocument1?


 
Tumcoat   (2003-09-15 09:15) [15]

>Думкин © (15.09.03 09:13) [14]
>Откуда рожается WordDocument1?

Из стандартных элементов на закладке Servers


 
Tumcoat   (2003-09-15 09:27) [16]

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


 
mfender   (2003-09-15 09:30) [17]

как символы вычленить я тебе уже написал. а вот с вордом что делать...


 
Tumcoat   (2003-09-15 09:41) [18]

Интересный вопрос, правда? :-)))


 
Думкин   (2003-09-15 09:42) [19]

> temp:=CreateOleObject("Word.Application");
> temp.Visible:=true

А это тогда зачем?


 
Tumcoat   (2003-09-15 09:48) [20]

>Думкин © (15.09.03 09:42) [19]
>А это тогда зачем?

Ну не умею я через WordDocument1 добавлять строки.


 
Думкин   (2003-09-15 10:19) [21]

> Tumcoat (15.09.03 09:48)

Тогда ты в себе вначале разберись. Позднее связывание, раннее. Тенцера почитай.


 
Думкин   (2003-09-15 10:21) [22]

А как добавлять и чего есть справка по VBA Excel. И еще пара способов.


 
Tumcoat   (2003-09-16 03:03) [23]


> Думкин © (15.09.03 10:21) [22]
> А как добавлять и чего есть справка по VBA Excel. И еще
> пара способов.


Во-первых: причем тут VBA Excel, я спрашивал про Word.
Во-вторых: пробовал, но я не настолько опытный программер, поэтому нужное мне так и не смог найти.
В-третьих: может поделишься этой парочкой способов.


 
Думкин   (2003-09-16 05:21) [24]

> Tumcoat (16.09.03 03:03)
1. Про Excel - описался. :-) Просто я часто с ним работаю так.
2. Я и говорю - почитай Тенцера, Елманову, Трепалина. Или можно чего попроще и сердитее.
3. Создаешь в Word нужный тебе макрос и анализируешь его, потом сверяешь это со справкой(не по Экселю, конечно, а по Ворду) и мучаешься. Все через это прошли(ну почти).

Я бы выбрал позднее связывание. Хотя хозяин барин.


 
AGGRESSOR   (2003-09-16 10:23) [25]

Есть очень хороший способ- включаешь в Word-е запись макросов, удаляешь, что тебе надо, потом смотришь получившийся макрос, ковыряешь его по необходимости и кладешь в Дельфу. Все.
Кстати, про позднее связывание разделяю мнение Думкина.


 
Tumcoat   (2003-09-17 07:49) [26]

Макросы ни в Word-е ни в Excel-е я писать не умею. Раньше на фиг не надо было, а теперь нет времени (ни писать , ни учиться). Поэтому и кинул вопрос в форум, думал, может есть знающие люди, которые в этом хорошо разбираются и смогут дать ответ. Иначе вообще зачем бы этот форум нужен был бы.


 
Думкин   (2003-09-17 07:57) [27]

> Tumcoat (17.09.03 07:49)

Макросы пишутся не просто - а очень просто.

1. Сервис - макрос - начать запись.
2. Делаешь что тебе надо.
3. Жмешь кнопку - стоп запись.
4. Сервис- макрос - макросы - изменить
5. Смотришь на код и материшься.
6. Приходит просветление
7. Пытаешься это засунуть в Дельфи.
8. Попутно читаешь справку по VBA.
9. Опять пытаешься вставить и т.д.
10. Начинаешь гнуть пальцы. :-)

Это проблема не Дельфи - потому никто сильно не кинется разрывать Ворд, сделай сам - выгоды на будущее море, благо по всему видно, что время у тебя есть.


 
Tumcoat   (2003-09-17 08:32) [28]


> Думкин © (17.09.03 07:57)


Ладно умничать, пытался я так сделать, но поскольку раньше с этим не сталкивался, то для меня это темный лес, где черт голову сломит и хвост поломает. И из этой справки по VBA тоже не хрена вытащить не удается. И еще одна проблема, Office у меня русифицированный, а в описаниях макросов и VBA все по-английски.
Так что это мороки на пару недель а у меня времени нету.


 
Думкин   (2003-09-17 09:32) [29]

> Tumcoat (17.09.03 08:32)
Ну и ленив же ты братец. С таким подходом в программировании завязывай.

procedure TForm1.Button1Click(Sender: TObject);
var
Word: Variant;
Document: Variant;
Selection,NewSel : Variant;
s : string;
i,j,k : integer;
begin
Try
Word := CreateOleObject("Word.Application");
Word.Visible := true;
try
Document := Word.Documents.Add;
Document.Paragraphs.Add;
Selection:=Document.Paragraphs.Item(1).Range;
Selection.Text:= "1 параграф";
Document.Paragraphs.Add;
Selection:=Document.Paragraphs.Item(2).Range;
Selection.Text:= "2 параграф";
Document.Paragraphs.Add;
Selection:=Document.Paragraphs.Item(3).Range;
Selection.Text:= "изменение символов в строке";
Document.Paragraphs.Add;
Selection:=Document.Paragraphs.Item(4).Range;
Selection.Text:= "4 параграф";
Selection:=Document.Paragraphs.Item(3).Range;
s := Selection.Text;
i := Pos("символов",s);
j := length("символов");
NewSel := Document.Paragraphs.Item(3).Range;
k := NewSel.Start-1;
NewSel.SetRange(k+i,k+i+j);
NewSel.Font.Bold := true;
try
try
Document.SaveAs(ExtractFilePath(Application.ExeName)+"1.doc");
except end;
finally
Document.Close
end;
except
end;
Word.Quit
Except
on E:Exception do begin
Word.Quit;
raise Exception.Create("


 
Tumcoat   (2003-09-17 09:51) [30]


> Думкин © (17.09.03 09:32)

Вот то-то! А то все мама, мама :-)))))
Именно этого я и добивался, сегодня вечером дома и попробую, но уже заранее БА-А-АЛЬШОЕ СПАСИБА.

ЗЫ: А насчет лени, ну а каждого есть свои недостатки, я даже единоборством занимаюсь самым ленивым (айкидо) :-))


 
Думкин   (2003-09-17 09:55) [31]

> Tumcoat (17.09.03 09:51)

Дело твое. Но я чтобы написать тот код прошел 9 пунктов.
Сейчас перейду к 10-му и айкидо не поможет. :-)



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

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

Наверх





Память: 0.52 MB
Время: 0.009 c
1-96293
McSimm2
2003-09-16 15:08
2003.09.29
Нажатость правой клавиши пиши


14-96342
Mr@MsGuns
2003-09-09 20:10
2003.09.29
You ll never walk alone!


14-96410
Дремучий
2003-09-11 11:04
2003.09.29
Почему из форумов нет ссылки на Список Анкет?


14-96395
VAleksey
2003-09-10 18:40
2003.09.29
Что нужно успеть сделать в жизни?


1-96168
scorpi
2003-09-16 12:54
2003.09.29
События объекта





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