Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 11.09.2019
Сообщений: 52

Как применить макрос к нескольким документам сразу?

17.09.2020, 23:16. Показов 4778. Ответов 3
Метки vba (Все метки)

Студворк — интернет-сервис помощи студентам
Есть макрос, который заменяет схожие по начертанию символы латиницы на крилицу.
Так же есть 30 документов, в которых может быть латиница.
Как к этим 30 документам его применить (не открывая их каждый)?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Sub changeLatToRus()
'Замена во всем документе латинских букв на киррилические
Dim i As Integer
Dim sLat As Variant
Dim sRus As Variant
Dim rDoc As Range
Set rDoc = ActiveDocument.Range
'список латинских букв
sLat = Array("e", "y", "u", "o", "p", "a", "k", "x", "c", _
              "E", "T", "O", "P", "A", "H", "K", "X", "C", "B", "M")
sRus = Array("е", "у", "и", "о", "р", "а", "к", "х", "с", _
               "Е", "Т", "О", "Р", "А", "Н", "К", "Х", "С", "В", "М")
Application.ScreenUpdating = False  ' Запрещаем обновление экрана во время работы макроса
With rDoc.Find
'заменяем все латинские символы на соответствующие кириллические
   .ClearFormatting
   .Replacement.ClearFormatting
   .Forward = True
   .Wrap = wdFindStop
   .MatchWildcards = False
   .Format = True
   .MatchCase = True
   For i = LBound(sLat) To UBound(sRus)
      .Text = sLat(i)
      .Replacement.Text = sRus(i)
      .Execute Replace:=wdReplaceAll
   Next i
End With
Application.ScreenUpdating = True  ' Обновляем экран
End Sub
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.09.2020, 23:16
Ответы с готовыми решениями:

Как применить функцию к нескольким сигналам сразу?
Имеется 100 записей сигналов. Необходимо применить функцию центрирования ко всем сигналам. Можно ли применить функцию сразу ко всем...

Как применить свойство к нескольким объектам сразу?
Доброго времени суток! У меня такая вот проблемка... Есть программа (делал не я, но править мне) на которой есть DBCtrlGrid, на нем...

Работа с одной формой нескольким документам
Здравствуйте форумчане! такой интересный вопрос может кто подскажет где посмотреть или как этот момент реализовать. Суть в том что в одном...

3
 Аватар для amd48
845 / 475 / 80
Регистрация: 18.05.2016
Сообщений: 1,267
Записей в блоге: 5
18.09.2020, 07:59
Открывать файлы в любом случае придётся. Вручную или программно.
Для программного способа надо определиться, как вы собираетесь перебирать эти файлы: показать пользователю диалог с выбором файлов или это просто папка, в которой надо обработать все имеющиеся файлы
А затем, имея массив файлов, можно строку
Set rDoc = ActiveDocument.Range
заменить на цикл, где вместо ActiveDocument будет использоваться элемент массива - документ
0
0 / 0 / 0
Регистрация: 11.09.2019
Сообщений: 52
22.09.2020, 13:12  [ТС]
Я иммею ввиду, что бы упростить процесс. Допустим документов не 30, а 1000. Не буду же я в каждый заходить и прожимать макрос. Как мне изменить код, подскажите пожалуйста.
0
371 / 269 / 93
Регистрация: 18.11.2015
Сообщений: 1,001
22.09.2020, 14:44
Лучший ответ Сообщение было отмечено Statson как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Dim CurF As Long
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        .Title = "Выбрать файлы" 'заголовок окна диалога
        .Filters.Clear 'очищаем установленные ранее типы файлов
        .Filters.Add "Excel files", "*.xls*;*.xlsx", 1 'устанавливаем возможность выбора только файлов Excel
        ''.Filters.Add "Text files", "*.txt", 2 'добавляем возможность выбора текстовых файлов
        .FilterIndex = 1 'устанавливаем тип файлов по умолчанию
        .InitialFileName = ThisWorkbook.Path & "\" 'назначаем папку отображения и имя файла по умолчанию
        .InitialView = msoFileDialogViewDetails 'вид диалогового окна(доступно 9 вариантов)
        If .Show = 0 Then Exit Sub 'показывает диалог
        'цикл по коллекции выбранных в диалоге файлов
        AllFil = .SelectedItems.Count
 
        For CurF = 1 To AllFil
            FilePuth = .SelectedItems(CurF)
            FileN = Dir(.SelectedItems(CurF))
            Workbooks.Open FilePuth 'Открывает поочередно каждую книгу из выбранных
            'Ваши действия с книгой
            Workbooks(CurBooks).Close SaveChanges:=True 'закрывает книгу сохраняя
        Next CurF 
        End With
Добавлено через 1 минуту
Сам диалог не помню где нашёл. Давно использовал для своего проекта
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.09.2020, 14:44
Помогаю со студенческими работами здесь

Как применить функцию к нескольким элементам
Добрый день! Подскажите как оптимизировать код. Есть несколько списков html <p class="push">1</p> <ul...

Как к нескольким картинкам в ImageList применить одну и ту же процедуру?
на форме 81 штук image, и 1 ImageList с 40 картинками внутри. надо что б эта процедура распространялась на все компоненты image. ...

Как этот ajax скрипт применить не к 1 форме а к нескольким ?
$("#contactForm").validator().on("submit", function (event) { if (event.isDefaultPrevented()) { // handle the invalid...

[CodeMirror] Как можно применить библиотеку к нескольким <textarea>?
Как можно применить библиотеку CodeMirror к нескольким &lt;textarea&gt;? Например, есть несколько &lt;textarea...

Как подключить js-скрипт сразу к нескольким файлам?
Здравствуйте. Вот есть допустим папка а в ней файлы page1, page2....page57 Должен ведь быть способ подключить js-скрипт ко всем файлам...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru