@pipetto

Почему макрос работает только для тех файлов, которые открыты вручную, а не при выборе, когда вылазит диалоговое окно?

Среда ругается на каждый For Each p In ActiveDocument

Sub BatchProcessing()
    Dim w As Word.Words
    Dim sec As Word.Section
    Dim r As Word.Range
    Dim p As Word.Paragraph
    Dim sen As Word.Sentences
    Dim countP, n As Integer
    
    With Application.FileDialog(msoFileDialogFilePicker)
    .AllowMultiSelect = True
    .Title = "Âûáåðåòå ôàéëû äëÿ îáðàáîòêè"
    .Filters.Clear
    .Filters.Add "Word", "*.docm; *.docx; *.doc"
    .InitialView = msoFileDialogViewDetails
    .Show
    
    For i = 1 To .SelectedItems.Count
    
    For Each p In ActiveDocument.Sections(1).Range.Paragraphs
        p.Range.Words(1).Bold = True
    Next p
    
    For Each p In ActiveDocument.Sections(2).Range.Paragraphs
        If p.Range.Sentences.Count > 1 Then
            p.Range.Sentences(1).Bold = True
            p.Range.Sentences(2).Bold = True
        Else
            p.Range.Sentences(1).Bold = True
        End If
    Next p
    
    Set doc = Documents.Open(.SelectedItems(i), Visible:=False)
    doc.Save
    doc.Close (True)
    
    Next i
    
    End With
    
End Sub
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
BasiC2k
@BasiC2k
.NET developer (open to job offers)
В Вашем коде, макрос обрабатывает только активный документ (ActiveDocument)
После выбора файла (ов) необходимо получить ссылку на конкретный файл (doc) и работать с ней.

Т.е. после процедуры выбора файлов, необходимо, после строки:
For i = 1 To .SelectedItems.Count
добавить:
Set doc = Documents.Open(.SelectedItems(i), Visible:=False) ' Открытие файла

и везде ниже по коду заменить ActiveDocument на doc

Открытие файла перед
doc.Save
уже не потребуется.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы