2017-12-11 7 views
0

Excelの文字列(列Aの列B)からWordの1000語/フレーズを置き換える必要があります。 私は以下のコードを使用しています。プレーンテキストの場合はうまく動作しますが、Wordファイルに埋め込まれたテーブルでは機能しません。置き換えられる単語がテーブルにある場合、この単語が置き換えられ、他のすべての単語を置き換えずにテーブルに多くのrawが作成されます。どうすれば修正できますか?ありがとう。複数の検索とMS Excelのリストからの置換:埋め込みテーブルのコードは機能しません

Sub findandreplace() 

Dim xlApp As Object 
Dim xlWB As Object 
Dim xlWS As Object 

Dim i As Integer, j As Integer 
Dim lastRow As Integer 

Set xlApp = CreateObject("Excel.Application") 
Set xlWB = xlApp.Workbooks.Open("PATH TO EXCEL FILE") 
Set xlWS = xlWB.Worksheets("Sheet1") 'Replace String with your Worksheet Name 

lastRow = 1000 

For i = 1 To ThisDocument.Words.Count - 1 Step 1 
For j = 1 To lastRow Step 1 
     ThisDocument.Words(i) = Replace(ThisDocument.Words(i), xlWS.Cells(j, 1).Value, xlWS.Cells(j, 2).Value) 
    Next j 
Next i 

Set xlWS = Nothing 
xlWB.Close True 
Set xlWB = Nothing 
xlApp.Quit 
Set xlApp = Nothing 

End Sub 

答えて

0

あなたのコードは、Wordのすべての単語、テキスト、カンマ、ドット、段落記号、セルマークの末尾などに対応しています。代わりにFind...Replace機能を使用するようにしてください。しかし、あなたはあなたのコードと私は考えることができquickesのアイデア滞在したい場合は、このようなIf Statement追加追加して次のようになります。

.... 
For j = 1 To lastRow Step 1 
    If InStr(1, ThisDocument.Words(i), xlWS.Cells(j, 1).Value, vbTextCompare) <> 0 Then 
     ThisDocument.Words(i) = Replace(ThisDocument.Words(i), xlWS.Cells(j, 1).Value, xlWS.Cells(j, 2).Value) 
    End if 
Next j 
.... 
+0

カジミエシュヤヴォルを、ご提案していただきありがとうございます。 Find ... Replaceを使用すると、コードはどのようになりますか?私は非常に新しいVBAの考えは、翻訳のためにできるだけ早く1550フレーズを置き換える必要があります。 –

+0

[この例](https://stackoverflow.com/questions/22187909/word-vba-find-replace-issue)または[こちら](https://stackoverflow.com/questions/18609963/vba- 2010年のtext-in-ms-wordの検索と置換)または[this](https://wordmvp.com/FAQs/Customization/ReplaceAnywhere.htm)または[this](https:// www.datanumen.com/blogs/4-useful-methods-find-replace-text-part-word-document/)。ご覧のとおり、インターネットには多くの例があります。さらに、マクロを記録してコードを取得することもできます。 –

関連する問題