Wordマクロ:2列テーブルに基づいて、テキスト内の文字列を置換する方法


3

したがって、Word文書で検索および置換したい一連の文字列があります。

私の文字列は2列のテーブルとして表示されます。たぶん、Wordでテーブルを作成し、それを手動でTXT、CSV、または何でも動作するように変換します...その部分を自動化する必要はありません。テーブルは大体次のようになります。

English word     French word
dog     chien
cat     chat
London     Londres

あなたはアイデアを得る...

最初の列に含まれる用語を検索し、それらを2番目の列の内容に置き換えるマクロが必要です。

手伝ってくれますか?ありがとうございました!

回答:


1
Selection.Find.ClearFormatting
With Selection.Find
.Text = "English Word"
.Replacement.Text = "French Word"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute

単語ごとにこれらのいずれかを作成しますが、これはあなたのテーブルを読みません


1

私はレイスタファリアンのスニペットを借りてそれを拡大する自由を取りました。filename="c:\folder\file.txtプレーンテキストファイルのパスとファイル名を使用して行を変更します。内容は、単語またはフレーズ、タブ、単語またはフレーズ、行末の順になります。私はエラーチェックを気にしませんでしたので、最後の行に行末がない場合、その行のテキストは置き換えられません。また、各行にタブを含めない場合、このマクロはおそらく壊れます。簡単に元に戻すことができるように、Word文書をバックアップします。

Sub Macro1()
    Dim ff As Long
    Dim x As Long
    Dim filename As String
    Dim buffer As String
    Dim charbuffer As String * 1

    filename = "c:\folder\file.txt"

    ff = FreeFile
    Open filename For Binary As ff
    buffer = ""
    charbuffer = ""
    For x = 1 To LOF(ff)
        Get #ff, , charbuffer
        If charbuffer <> vbCr And charbuffer <> vbLf Then
            buffer = buffer & charbuffer
        Else
            If buffer <> "" Then processBuffer buffer
            buffer = ""
        End If
    Next x
    Close ff


End Sub
Sub processBuffer(buffer As String)
    Dim varArray As Variant
    varArray = Split(buffer, vbTab)
    makeReplacements varArray(0), varArray(1)
End Sub
Sub makeReplacements(ByVal strToReplace As String, ByVal strReplacement As String)

    'MsgBox strToReplace & " will be replaced by " & strReplacement

    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = strToReplace
        .Replacement.Text = strReplacement
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
End Sub

english word French wordテキストドキュメントにテーブルヘッダー(つまり)を含めたくないことに注意してください。
horatio
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.