Mетодом научного тыка получил макрос перебора Стилей в документе Проверил, что он работает при указании конкретного имени стиля Нужно ловить стиль не по конкретному названию, а по его части, например по первому символу - мои стили начинаются с точки как поймать стиль по первой букве его имени?
вот мой код [vba]
Код
Sub Макрос1() ' ' Макрос1 Макрос ' ' Dim st As Style, CntSt As Integer, str As Characters
ActiveDocument.FormattingShowFilter = wdShowFilterStylesAll ActiveDocument.StyleSortMethod = wdStyleSortByName Selection.ClearFormatting With ActiveDocument CntSt = .Styles.Count - 1 MsgBox ((CntSt)) For i = 0 To CntSt 'If Characters(.Styles(i).NameLocal).First = "." Then .Styles(i).Delete 'If .Styles(i).NameLocal(1) = "." Then .Styles(i).Delete If .Styles(i).NameLocal = ".стандартный" Then .Styles(i).Delete Next i End With
End Sub
[/vba] p.s. хотел было использовать в цикле For Each вместо For To, но он не воспринимает Styles после in как массив
Mетодом научного тыка получил макрос перебора Стилей в документе Проверил, что он работает при указании конкретного имени стиля Нужно ловить стиль не по конкретному названию, а по его части, например по первому символу - мои стили начинаются с точки как поймать стиль по первой букве его имени?
вот мой код [vba]
Код
Sub Макрос1() ' ' Макрос1 Макрос ' ' Dim st As Style, CntSt As Integer, str As Characters
ActiveDocument.FormattingShowFilter = wdShowFilterStylesAll ActiveDocument.StyleSortMethod = wdStyleSortByName Selection.ClearFormatting With ActiveDocument CntSt = .Styles.Count - 1 MsgBox ((CntSt)) For i = 0 To CntSt 'If Characters(.Styles(i).NameLocal).First = "." Then .Styles(i).Delete 'If .Styles(i).NameLocal(1) = "." Then .Styles(i).Delete If .Styles(i).NameLocal = ".стандартный" Then .Styles(i).Delete Next i End With
End Sub
[/vba] p.s. хотел было использовать в цикле For Each вместо For To, но он не воспринимает Styles после in как массивкарандаш
Сообщение отредактировал карандаш - Пятница, 03.04.2015, 14:42
If Left(.Styles(i).NameLocal,1) = "." Then .Styles(i).Delete If Instr(.Styles(i).NameLocal,".") Then .Styles(i).Delete If .Styles(i).NameLocal like ".*" Then .Styles(i).Delete If Mid(.Styles(i).NameLocal,1,1) = "." Then .Styles(i).Delete
[/vba]
[vba]
Код
If Left(.Styles(i).NameLocal,1) = "." Then .Styles(i).Delete If Instr(.Styles(i).NameLocal,".") Then .Styles(i).Delete If .Styles(i).NameLocal like ".*" Then .Styles(i).Delete If Mid(.Styles(i).NameLocal,1,1) = "." Then .Styles(i).Delete
For i = 1 To CntSt ' If InStr(.Styles(i).NameLocal, ".") Then If Left(.Styles(i).NameLocal, 1) <> "." Then MsgBox ((.Styles(i).NameLocal)) .Styles(i).Delete End If Next i
[/vba]
спотыкается при i=5 на строке .Styles(i).Delete пишет, что такого имени не существует Но при этом выводит имя только один раз
но это уже другой вопрос за помощь большое спасибо
попробовал два варианта
[vba]
Код
For i = 1 To CntSt ' If InStr(.Styles(i).NameLocal, ".") Then If Left(.Styles(i).NameLocal, 1) <> "." Then MsgBox ((.Styles(i).NameLocal)) .Styles(i).Delete End If Next i
[/vba]
спотыкается при i=5 на строке .Styles(i).Delete пишет, что такого имени не существует Но при этом выводит имя только один раз
но это уже другой вопрос за помощь большое спасибокарандаш
Сообщение отредактировал Serge_007 - Суббота, 04.04.2015, 00:26