2016-12-21 7 views
-2

Я хочу удалить из файла .DOCX все вхождения нежелательных слов, определенных в списке. Я создаю конкорданс, но я не хочу обрабатывать общие слова (например, «« »и« »либо» ...)Как итеративно удалять слова, определенные в списке

У меня есть файл .DOCX, который я также сохранил как .TXT, это основной документ, из которого я хочу конкорданс. У меня есть список нежелательных слов в отдельном файле .TXT.

Как я могу написать (или записать) макрос, чтобы неоднократно получать следующее слово из списка, находить и удалять все вхождения этого слова, повторять, пока список не исчерпан.

Было бы хорошо использовать VBA в Word или создать макрос в editor.exe (бесплатный редактор MS).

Спасибо.

ответ

0

Чтобы использовать текст в файле .TXT, вы можете использовать метод Open ... For Input. Вы можете прокручивать слова и строки в этом файле .TXT и выполнять поиск/замещение в вашем документе.

Вот код надрез можно адаптировать:

Sub DeleteWordsStoredInTXTFileFromThisDoc() 
Dim filePath As String 
' change the filePath to point to your file 
' you can put the full path, for example "C:\foldername\filename.txt" 
filePath = Environ("USERPROFILE") & "\Desktop\textfile.txt" 

Open filePath For Input As 1 
Dim LineFromFile As String 
Do Until EOF(1) 
    Line Input #1, LineFromFile 
    Dim LineItems() As String 
    Dim LineItem As Variant 
    ' depending on how you are listing your naughty words you need to pick from the following lines 
    ' if your words are separated by commas 
    'LineItems = Split(LineFromFile, ",") 
    ' if your words are separated onto different lines 
    LineItems = Split(LineFromFile, Chr(13)) 
    For Each LineItem In LineItems 
     With Selection.Find 
      .Text = LineItem 
      .Replacement.Text = "" 
      .Execute MatchWholeWord:=True, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue 
     End With 
    Next LineItem 
Loop 
Close #1 
End Sub 

Обратите внимание, что если ваш список .TXT слов, чтобы удалить не включать пробелы до или после слова, то вы будете в конечном итоге оставить за дополнительным пространством в вашем документе. Удаление слова «плохо» из «Большой плохой волк» даст

"Big wolf" 

, когда вы, вероятно, хотите

"Big wolf" 

Добавление пространств в список слов, как «плохой» или «плохо» поможет избежать этого , Вы должны проверить свой документ.

+0

Спасибо, Лукас! VBA работал как чемпион. Я ценю помощь. --dave – user1704475