find execute



Wdreplaceall

Автор Максим Васильев задал вопрос в разделе Другие языки и технологии

Помогите с макросами в Word 2007 и получил лучший ответ

Ответ от Litvin22 litvin22[гуру]
Большу часть из перечисленного можно сделать без макросов, работая со стилями и заменой.
Замена, кстати, позволяет менять шрифт, абзац и т. п.
Замену также можно записать мкрорекордером и отредактировать вручную. Например использовать замену ^p на ^p & N, где ^p знак абзаца, а N номер - это для номерации.
Я правда, не знаю, как завершить подобный макрос по достижении конца первоначально выделения.
С литературой на эту тему очень туго. Во всех учебниках рассмотрены тривиальные примеры, а объектная модель Word довольно запутана и нелогична.
Если это чем поможет - вот мой макрос
Sub zzMashkov() '' форматирование текста от Машкова
''(Home: Mail: moshkow@systud.msk.su)
'шрифт и абзац
Selection.WholeStory
Selection.Font.Name = "Times New Roman"
With Selection.ParagraphFormat
.Alignment = wdAlignParagraphJustify
.FirstLineIndent = CentimetersToPoints(0.63)
End With
Selection.HomeKey Unit:=wdLine
'Если надо, сохранение 2-х абзицев подряд
With Selection.Find
.Text = "^p^p"
.Replacement.Text = "^p^p22222"
End With
Selection.Find.Execute Replace:=wdReplaceAll
'With Selection.Find
.Text = "^p "
.Replacement.Text = "^p^p"
End With
Selection.Find.Execute Replace:=wdReplaceAll
'убрать лишние абзацы в концах строк с сохранением стилей
With Selection.Find
.Text = "^p"
.Replacement.Text = "00000^p"
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "00000^p00000^p"
.Replacement.Text = "^p00000"
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "00000^p"
.Replacement.Text = " "
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "00000"
.Replacement.Text = ""
End With
Selection.Find.Execute Replace:=wdReplaceAll
'With Selection.Find
.Text = "--"
.Replacement.Text = "-"
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "22222"
.Replacement.Text = "^p"
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "^p "
.Replacement.Text = "^p"
.Forward = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = " ^p"
.Replacement.Text = "^p"
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "^p^p^p"
.Replacement.Text = "^p^p"
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = " "
.Replacement.Text = " "
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Ответ от Danil Gorloff[гуру]
а чем не нравяться стандартные заголовки? я ваще вапрос не понял - макросы ворд этого делать не смогут помоему, это ваще гемор какойто - надо целую программу составлять, ты хучь алгоритм сможешь сформулировать? , методичка на 20 листов обычно, ну макс 100, и в чем проблемма в заголовках чтоли.

Ответ от Алексей Пастухов[гуру]
в твоем случае ручками быстрее

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Помогите с макросами в Word 2007
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*