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
а чем не нравяться стандартные заголовки? я ваще вапрос не понял - макросы ворд этого делать не смогут помоему, это ваще гемор какойто - надо целую программу составлять, ты хучь алгоритм сможешь сформулировать? , методичка на 20 листов обычно, ну макс 100, и в чем проблемма в заголовках чтоли.
в твоем случае ручками быстрее