1

テーブル内の特定のセルを検索し、そこにある特定の文字列を置き換えるマクロを単語で作成しようとしています。例えば:

(word1 or word2 or word3).ab,ti.

に置き換える必要があります

word1[TIAB] または word2[TIAB] または word3[TIAB]

したがって、これまで行ってきたことは、単純なreplaceAllを使用して最初の括弧を削除し、接尾辞 ").ab,ti." を置き換えることです。by "[TIAB]。もちろん、それは単語 1 と単語 2 に語尾を追加しません。

    Sub Makro6()
'
' Makro6 Makro
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = ".ab,ti."
        .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

私が必要としているのは、replaceAllサブルーチンにループを埋め込むことだと思います。これは、最初の位置から現在の行の最後まで実行され、文字列 " または " を "[TIAB] または " に置き換えます。しかし、私はVBAにまったく慣れていないので、これを行う方法がわかりません。助言がありますか?

ご協力いただきありがとうございます!レニ

4

1 に答える 1

3

このコードは、必要なアクションを実行します。

Sub Makro6()

  Dim maxCount, curCount As Integer

  maxCount = 3
  curCount = 0
  Do
    curCount = curCount + 1
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = Chr(40) & "word" & curCount & Chr(41) & ".ab,ti."
        .Replacement.Text = "word" & curCount & "[TIAB]"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = False
        .Execute Replace:=wdReplaceAll
    End With
  Loop While (curCount < maxCount)

End Sub

驚いたことに (少なくとも私にとっては)、マクロはターゲット文字列を見つけることができなかったので、かっこを説明するために ASCII コード (Chr(40) & Chr(41)) に頼らなければならなかったことに注意してください。私はいくつかのテストを行いましたが、問題は括弧の後に別の文字 (?!) が続く場合にのみ発生します。

于 2013-06-15T19:41:22.113 に答える