1

Тема: Макрос для удаления тегов

Есть rdf файл, пытаюсь в Ворде почистить его от всех вхождений тегов. Язык не знаю, поэтому делаю сначала запись, потом смотрю, что там у меня записалось, и пытаюсь потом что-то слепить.
Кусок файла прикрепила. Надо убрать все (примерно пока, может еще что встречается дальше):

<NS1:clipping RDF:about="rdf:#$ЛЮБОЕ КОЛ_ВО СИМВОЛОВ" NS1:name="ЛЮБОЕ КОЛ_СИМВОЛОВ">
<NS1:text>
</NS1:text>
</NS1:clipping>
<RDF:Seq RDF:about="rdf:#$PiUSz3"> здесь и далее после решетки ЛКС
<RDF:li RDF:resource="rdf:#$RiUSz3"/>
<RDF:li RDF:resource="rdf:#$SiUSz3"/>
<RDF:li RDF:resource="rdf:#$TiUSz3"/>
</RDF:Seq><NS1:folder RDF:about="rdf:#$PiUSz3"
NS1:hassubfolders="false"/>

Мой макрос:

Sub Макрос1()
'
' Макрос1 Макрос
'
'
    Selection.WholeStory
    With Selection.ParagraphFormat
        .LeftIndent = CentimetersToPoints(0)
        .RightIndent = CentimetersToPoints(0)
        .SpaceBefore = 0
        .SpaceBeforeAuto = False
        .SpaceAfter = 0
        .SpaceAfterAuto = False
        .LineSpacingRule = wdLineSpaceSingle
        .Alignment = wdAlignParagraphJustify
        .WidowControl = False
        .KeepWithNext = False
        .KeepTogether = False
        .PageBreakBefore = False
        .NoLineNumber = False
        .Hyphenation = True
        .FirstLineIndent = CentimetersToPoints(1.25)
        .OutlineLevel = wdOutlineLevelBodyText
        .CharacterUnitLeftIndent = 0
        .CharacterUnitRightIndent = 0
        .CharacterUnitFirstLineIndent = 0
        .LineUnitBefore = 0
        .LineUnitAfter = 0
        .MirrorIndents = False
    End With
    Selection.Font.Name = "Times New Roman"
    Selection.Font.Size = 12
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "<NS1:clipping RDF:about=""*"" NS1:name=""*""> "
        .Replacement.Text = " "
        .Text = "RDF:RDF"
        .Replacement.Text = " "
        .Text = "<NS1:text>"
        .Replacement.Text = " "
        .Text = "</NS1:text>"
        .Replacement.Text = " "
        .Text = "</NS1:clipping>"
        .Replacement.Text = " "
        .Text = "<RDF:Seq RDF:about=""*""> "
        .Replacement.Text = " "
        .Text = "<RDF:li RDF:resource=""*""/> "
        .Replacement.Text = " "
        .Text = "</RDF:Seq>"
        .Replacement.Text = " "
        .Text = "<NS1:folder RDF:about=""*"" "
        .Replacement.Text = " "
        .Text = "NS1:hassubfolders=""false""/> "
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    
End Sub

В общем, * у меня не работает никак, голова уже кругом, я вокруг нее что только не ставила - кавычек 50 штук, скобки квадратные, пробелы туда-сюда, подстан. зн. включала-выключала... Не заменяет и все тут. Но если так сделать:

Sub Макрос2()
'
' Макрос2 Макрос
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "<NS1:clipping RDF:about=""rdf:#$*"" "
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

...почему-то удаляет. А стоит дописать NS1:name ... и все, стоп, ошибки всякие. Разницы я не вижу между первым и вторым макросом, оформлено все вроде так же. Помогите!


Просьба подсказать именно таким макросом, хочется понимать просто. Я тут за два часа перелопатила кучу инфы, в частности встречалось:

Public Sub Videl()

For a = 1 To ActiveDocument.ComputeStatistics(wdStatisticLines)
Selection.Find.ClearFormatting
With Selection.Find
.Text = "книга «*»"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = True
End With
Selection.Find.Execute
With Selection
.MoveStart Unit:=wdCharacter, Count:=6
.Font.Bold = True
End With
Next

End Sub

- найти все вхождения после книги любых символов и сделать их жирными, но к себе никак притянуть не могу, уже сложно.


И, если можно (или новую темку создать?), как проверить документ на дубли - например, 30 символов и более уже были ранее в документе в таком же порядке - удалить. Макросом.

Post's attachments

RDF1.docx 12.52 Кб, 1 скачиваний с 2016-12-06 

You don't have the permssions to download the attachments of this post.

2

Re: Макрос для удаления тегов

Для удаления первого тега попробуйте так:

Sub Макрос1()
    Selection.find.ClearFormatting
    Selection.find.Replacement.ClearFormatting
    With Selection.find
        .Text = "<NS1:clipping RDF:about=""rdf:#$"
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindContinue
    End With
    Selection.find.Execute Replace:=wdReplaceAll
End Sub
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.