Страницы: 1
RSS
Замена фрагмента текста в большом количестве файлов, Есть много папок, в которых хранятся папки с документами word. Задача - заменить в этиъ документах 1 фрагмент текста на новый.
 
Excelopfer, в Linux, например можно использовать команду ниже, предварительно перейдя в корневую папку с файлами (самую верхнюю по вложенности с документами Word). И не надо никаких макросов  :)

P.S: все ниже написанное (включая регулярное выражение) написано ПРОСТО ДЛЯ ПРИМЕРА!

Код
find . -type f -name '*.doc' | xargs sed -r -i 's/[-0-9+]+/номер_телефона/g'
Изменено: artemkau88 - 17.11.2022 19:46:32
 
artemkau88, сомневаюсь, что sed работает с бинарными файлами word
 
bigorq, возможно, но у меня корректно отработал не отработал (создал несколько файлов docx на машине с Win). Я пока в процессе погружения в эту ОС, так что, прошу не кидать тапками

нашел ссылку по этой теме:
https://unix-stackexchange-com.translate.goog/questions/316891/how-to-replace-a-word-inside-a-docx-f...

bigorq, спасибо! Пошел учить матчасть! :)  
Изменено: artemkau88 - 17.11.2022 19:46:32
 
Всем привет! есть 20 папок, в каждой из которых около 10 папок, заполненных документами MS Word. Во всех этих документах содержатся разные рабочие инструкции и есть телефонный номер, который необходимо заменить. Как при помощи макроса заменить номер во всех файлах?
 
У меня старый добрый банальный Windows. Неужели никак нельзя? там несколько тысяч файлов. С ума сойду
 
Цитата
artemkau88 написал:
Пошел учить матчасть!
только учтите, что Excelopfer, пишет о doс файлах (может быть ему все-равно doc или docx), но doc это бинарные файлы и как архив не открываются и методом по ссылке с ними ничего не сделаешь
 
Мне именно doc, да
 
bigorq, понял, спасибо!
 
Как-то так.
Код
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
 
МатросНаЗебре, не работает. Показывает ошибку. Должно появится окно с выборами файлов, правильно?  
 
Цитата
Excelopfer написал:
Должно появится окно с выборами файлов, правильно?
Да, у меня появляется
Страницы: 1
Наверх