Макрос для для замены слов в файле word из файла-словаря Excel

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Михаил_П
Сообщения: 7
Зарегистрирован: 08 май 2014, 15:05

08 май 2014, 23:33

Здравствуйте уважаемые форумчане!
Столкнулся со следующей проблемой на работе: Есть огромная куча буклетов, которые нужно переводить с английского на русский, но в которых используется масса профессиональных терминов и сокращений. Буклетов под сотню штук, в каждом заменять одни и те же сокращения займет уйму времени.

Хотел бы спросить Вас, уважаемые форумчане, как можно решить эту проблему? Я плохо разбираюсь в VBA и написании макросов. Хочу реализовать следующим образом: Один файл - словарь терминов, которые нужно заменять (файл эксель), который может пополняться. А для word нужен макрос, который открывал бы этот словарь и в файле буклета менял сокращение на нужный термин.

Например есть вордовский файл, в тексте есть фраза "функция TDN".
В экселевском файле-словаре в одном столбце указано значение TDN, во втором - значение на которое нужно этот TDN поменять, например: Режим день/ночь (True Day/Night)
В итоге при запуске макроса в вордовском файле буклета, он заменяет TDN на Режим день/ночь (True Day/Night) как указано в экселевском словаре.

Большое спасибо, если сможете подсказать/помочь.
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

09 май 2014, 08:58

Может быть вместо того, чтобы 100 раз вручную открывать вордовские документы и запускать там макрос, имеет смысл, открыть словарь-замены, проще говоря XL файл и один раз выполнить макрос замены ?

Разумеется, все необходимые .DOC лучше собрать в одной папке и, наверное, тестировать лучше на копиях.
Дмит
Сообщения: 144
Зарегистрирован: 27 ноя 2004, 22:23
Контактная информация:

09 май 2014, 09:07

Для начала разбил бы Вашу задачу на части:
1 Заменить в тексте Word одно слово на другое (TDN на Режим день/ночь)
2 Составить цикл по словарю замен (организовать сам словарь)
3 Получить словарь из файла Excel (тут бы сразу отказался в пользу простого текстового файла)
4 Организовать добавление и редактирование словаря (если это происходит 1 раз или оч. редко, то пункт лишний)
А теперь вопрос Вам - что из пунктов вызывает затруднения?

Для начала совет по пункту 1 - запишите макрос Ваших действий по замене слова в тексте (Найти - Заменить).
В макросе всё необходимое будет обычно с мусором. Мусор почистите вручную.
Михаил_П
Сообщения: 7
Зарегистрирован: 08 май 2014, 15:05

09 май 2014, 09:09

pashulka писал(а):Может быть вместо того, чтобы 100 раз вручную открывать вордовские документы и запускать там макрос, имеет смысл, открыть словарь-замены, проще говоря XL файл и один раз выполнить макрос замены ?

Разумеется, все необходимые .DOC лучше собрать в одной папке и, наверное, тестировать лучше на копиях.

Да, это бы сошло за отличный вариант. Вы можете подсказать, как это осуществить?
Михаил_П
Сообщения: 7
Зарегистрирован: 08 май 2014, 15:05

09 май 2014, 09:14

Дмит писал(а):Для начала разбил бы Вашу задачу на части:
1 Заменить в тексте Word одно слово на другое (TDN на Режим день/ночь)
2 Составить цикл по словарю замен (организовать сам словарь)
3 Получить словарь из файла Excel (тут бы сразу отказался в пользу простого текстового файла)
4 Организовать добавление и редактирование словаря (если это происходит 1 раз или оч. редко, то пункт лишний)
А теперь вопрос Вам - что из пунктов вызывает затруднения?

Для начала совет по пункту 1 - запишите макрос Ваших действий по замене слова в тексте (Найти - Заменить).
В макросе всё необходимое будет обычно с мусором. Мусор почистите вручную.

Макрос для замены слов в ворде у меня сделать получилось. А вот как подтягивать такой словарь подтянуть из внешнего файла не понимаю. Словарь будет часто редактироваться. Спасибо за любые советы!
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

09 май 2014, 10:27

Михаил_П писал(а):Да, это бы сошло за отличный вариант. Вы можете подсказать, как это осуществить?
Можете протестировать такой вариант (см. аттач)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Михаил_П
Сообщения: 7
Зарегистрирован: 08 май 2014, 15:05

09 май 2014, 10:49

pashulka писал(а):Можете протестировать такой вариант (см. аттач)

Святой вы человек!!! Да, это именно то, что надо!

Конечно, если подскажете, как указать выбор папки и слэш после неё программно я буду премного благодарен! Просто хочу передать этот файл коллегам из других отделов, чтобы им не пришлось менять папку и слэш в коде.

Ещё раз спасибо!
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

09 май 2014, 11:12

Если речь идёт о Microsoft Office XP (или старше), то можно воспользоваться этим советом и замутить, что-то вроде :

Код: Выделить всё

With Application.FileDialog(msoFileDialogFolderPicker)
     If .Show = True Then
        iPath = .SelectedItems(1)
        iPath = IIf(Right(iPath, 1) = "\", iPath, iPath & "\")        
     Else
        MsgBox "Выберите нужную папку", vbCritical, ""
        Exit Sub
     End If
End With
Михаил_П
Сообщения: 7
Зарегистрирован: 08 май 2014, 15:05

09 май 2014, 11:35

Ещё раз спасибо! Прикрутил! Макрос даже стал почему-то работать быстрее :o
Спасибо за помощь, я думаю вопрос закрыт!
Михаил_П
Сообщения: 7
Зарегистрирован: 08 май 2014, 15:05

09 май 2014, 13:35

pashulka писал(а):Если речь идёт о Microsoft Office XP (или старше), то можно воспользоваться этим советом и замутить, что-то вроде :

Код: Выделить всё

With Application.FileDialog(msoFileDialogFolderPicker)
     If .Show = True Then
        iPath = .SelectedItems(1)
        iPath = IIf(Right(iPath, 1) = "\", iPath, iPath & "\")        
     Else
        MsgBox "Выберите нужную папку", vbCritical, ""
        Exit Sub
     End If
End With

Заметил, что почему-то макрос не обрабатывает содержимое колонтитулов. Не подскажете как с этим справиться?
Ответить