-2

そのようなコードが必要です... 2 つのタグの間に存在するデータを非表示にする必要があります.. そのために、まずドキュメント内のタグを検索し、そのタグを登録済みのシンボル (®) に置き換えて、そのような範囲。タグを置き換えない方法でコードが必要です

Sub Test()
Dim i As Long
i = 0
Dim myWord As String
myWord = "®"
TargetList = Array("</hidden>")
With ActiveDocument.Content.Find
     .Text = "</hidden>"
     .Replacement.Text = myWord
     .Wrap = wdFindContinue
     .Execute Replace:=wdReplaceAll
End With 
  Counter = 1
Set Range = ActiveDocument.Range
Selection.HomeKey Unit:=wdStory
With Selection.Find
    .Forward = True
    .Wrap = wdFindStop
    .Text = "<hidden>"
While .Execute
    Counter = Counter + 1
Wend
End With
For i = 0 To Counter
Set Range = ActiveDocument.Range
Selection.HomeKey Unit:=wdStory
With Selection.Find
    .Forward = True
    .Wrap = wdFindStop
    .Text = "<hidden>"
If .Execute(Forward:=True) = True Then
With Selection.Range
Selection.MoveEndUntil Cset:="®", Count:=wdForward
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Font.Hidden = True
End With
End If
End With
Next i
End Sub
4

1 に答える 1

3

これは、ワイルドカードを使用した単純な単語の検索と置換を使用して実現できます。

With Selection.Find
    .ClearFormatting
    .ClearAllFuzzyOptions

    .text = "[<]hidden[>](*)[<]/hidden[>]"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True

    .Replacement.text = ""
    .Replacement.ClearFormatting

    .Replacement.Font.Hidden = True

    .Execute Replace:=wdReplaceAll
End With

タグも削除する場合は、次の置換テキストを使用します。

    .Replacement.text = "\1"
于 2013-05-15T12:17:44.290 に答える