Замена фрагмента текста в большом количестве файлов, Есть много папок, в которых хранятся папки с документами word. Задача - заменить в этиъ документах 1 фрагмент текста на новый.
Excelopfer, в Linux, например можно использовать команду ниже, предварительно перейдя в корневую папку с файлами (самую верхнюю по вложенности с документами Word). И не надо никаких макросов
P.S: все ниже написанное (включая регулярное выражение) написано ПРОСТО ДЛЯ ПРИМЕРА!
Код
find . -type f -name '*.doc' | xargs sed -r -i 's/[-0-9+]+/номер_телефона/g'
bigorq, возможно, но у меня корректно отработал не отработал (создал несколько файлов docx на машине с Win). Я пока в процессе погружения в эту ОС, так что, прошу не кидать тапками
Всем привет! есть 20 папок, в каждой из которых около 10 папок, заполненных документами MS Word. Во всех этих документах содержатся разные рабочие инструкции и есть телефонный номер, который необходимо заменить. Как при помощи макроса заменить номер во всех файлах?
только учтите, что Excelopfer, пишет о doс файлах (может быть ему все-равно doc или docx), но doc это бинарные файлы и как архив не открываются и методом по ссылке с ними ничего не сделаешь
Sub ShowFileDialog()
Dim oFD As FileDialog
Dim x, lf As Long
'назначаем переменной ссылку на экземпляр диалога
Set oFD = Application.FileDialog(msoFileDialogFilePicker)
With oFD 'используем короткое обращение к объекту
'так же можно без oFD
'With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Выбрать файлы" 'заголовок окна диалога
.Filters.Clear 'очищаем установленные ранее типы файлов
.Filters.Add "Excel files", "*.doc*", 1 'устанавливаем возможность выбора только файлов Excel
'.Filters.Add "Text files", "*.txt", 2 'добавляем возможность выбора текстовых файлов
.FilterIndex = 1 'устанавливаем тип файлов по умолчанию - Text files(Текстовые файлы)
.InitialFileName = ""
.InitialView = msoFileDialogViewDetails 'вид диалогового окна(доступно 9 вариантов)
If .Show = 0 Then Exit Sub 'показывает диалог
'цикл по коллекции выбранных в диалоге файлов
For lf = 1 To .SelectedItems.Count
x = .SelectedItems(lf) 'считываем полный путь к файлу
Documents.Open FileName:=x
Макрос2
Next
End With
End Sub
Sub Макрос2()
Selection.WholeStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "111-11-11"
.Replacement.Text = "222-22-22"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
ActiveDocument.Save
ActiveWindow.Close
End Sub