Макрос для для замены слов в файле word из файла-словаря Excel
Модератор: Naeel Maqsudov
Здравствуйте уважаемые форумчане!
Столкнулся со следующей проблемой на работе: Есть огромная куча буклетов, которые нужно переводить с английского на русский, но в которых используется масса профессиональных терминов и сокращений. Буклетов под сотню штук, в каждом заменять одни и те же сокращения займет уйму времени.
Хотел бы спросить Вас, уважаемые форумчане, как можно решить эту проблему? Я плохо разбираюсь в VBA и написании макросов. Хочу реализовать следующим образом: Один файл - словарь терминов, которые нужно заменять (файл эксель), который может пополняться. А для word нужен макрос, который открывал бы этот словарь и в файле буклета менял сокращение на нужный термин.
Например есть вордовский файл, в тексте есть фраза "функция TDN".
В экселевском файле-словаре в одном столбце указано значение TDN, во втором - значение на которое нужно этот TDN поменять, например: Режим день/ночь (True Day/Night)
В итоге при запуске макроса в вордовском файле буклета, он заменяет TDN на Режим день/ночь (True Day/Night) как указано в экселевском словаре.
Большое спасибо, если сможете подсказать/помочь.
Столкнулся со следующей проблемой на работе: Есть огромная куча буклетов, которые нужно переводить с английского на русский, но в которых используется масса профессиональных терминов и сокращений. Буклетов под сотню штук, в каждом заменять одни и те же сокращения займет уйму времени.
Хотел бы спросить Вас, уважаемые форумчане, как можно решить эту проблему? Я плохо разбираюсь в VBA и написании макросов. Хочу реализовать следующим образом: Один файл - словарь терминов, которые нужно заменять (файл эксель), который может пополняться. А для word нужен макрос, который открывал бы этот словарь и в файле буклета менял сокращение на нужный термин.
Например есть вордовский файл, в тексте есть фраза "функция TDN".
В экселевском файле-словаре в одном столбце указано значение TDN, во втором - значение на которое нужно этот TDN поменять, например: Режим день/ночь (True Day/Night)
В итоге при запуске макроса в вордовском файле буклета, он заменяет TDN на Режим день/ночь (True Day/Night) как указано в экселевском словаре.
Большое спасибо, если сможете подсказать/помочь.
Может быть вместо того, чтобы 100 раз вручную открывать вордовские документы и запускать там макрос, имеет смысл, открыть словарь-замены, проще говоря XL файл и один раз выполнить макрос замены ?
Разумеется, все необходимые .DOC лучше собрать в одной папке и, наверное, тестировать лучше на копиях.
Разумеется, все необходимые .DOC лучше собрать в одной папке и, наверное, тестировать лучше на копиях.
Для начала разбил бы Вашу задачу на части:
1 Заменить в тексте Word одно слово на другое (TDN на Режим день/ночь)
2 Составить цикл по словарю замен (организовать сам словарь)
3 Получить словарь из файла Excel (тут бы сразу отказался в пользу простого текстового файла)
4 Организовать добавление и редактирование словаря (если это происходит 1 раз или оч. редко, то пункт лишний)
А теперь вопрос Вам - что из пунктов вызывает затруднения?
Для начала совет по пункту 1 - запишите макрос Ваших действий по замене слова в тексте (Найти - Заменить).
В макросе всё необходимое будет обычно с мусором. Мусор почистите вручную.
1 Заменить в тексте Word одно слово на другое (TDN на Режим день/ночь)
2 Составить цикл по словарю замен (организовать сам словарь)
3 Получить словарь из файла Excel (тут бы сразу отказался в пользу простого текстового файла)
4 Организовать добавление и редактирование словаря (если это происходит 1 раз или оч. редко, то пункт лишний)
А теперь вопрос Вам - что из пунктов вызывает затруднения?
Для начала совет по пункту 1 - запишите макрос Ваших действий по замене слова в тексте (Найти - Заменить).
В макросе всё необходимое будет обычно с мусором. Мусор почистите вручную.
pashulka писал(а):Может быть вместо того, чтобы 100 раз вручную открывать вордовские документы и запускать там макрос, имеет смысл, открыть словарь-замены, проще говоря XL файл и один раз выполнить макрос замены ?
Разумеется, все необходимые .DOC лучше собрать в одной папке и, наверное, тестировать лучше на копиях.
Да, это бы сошло за отличный вариант. Вы можете подсказать, как это осуществить?
Дмит писал(а):Для начала разбил бы Вашу задачу на части:
1 Заменить в тексте Word одно слово на другое (TDN на Режим день/ночь)
2 Составить цикл по словарю замен (организовать сам словарь)
3 Получить словарь из файла Excel (тут бы сразу отказался в пользу простого текстового файла)
4 Организовать добавление и редактирование словаря (если это происходит 1 раз или оч. редко, то пункт лишний)
А теперь вопрос Вам - что из пунктов вызывает затруднения?
Для начала совет по пункту 1 - запишите макрос Ваших действий по замене слова в тексте (Найти - Заменить).
В макросе всё необходимое будет обычно с мусором. Мусор почистите вручную.
Макрос для замены слов в ворде у меня сделать получилось. А вот как подтягивать такой словарь подтянуть из внешнего файла не понимаю. Словарь будет часто редактироваться. Спасибо за любые советы!
Можете протестировать такой вариант (см. аттач)Михаил_П писал(а):Да, это бы сошло за отличный вариант. Вы можете подсказать, как это осуществить?
- Вложения
-
- Sample_for_Michae&.zip
- (9.82 КБ) 249 скачиваний
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
Ещё раз спасибо! Прикрутил! Макрос даже стал почему-то работать быстрее 
Спасибо за помощь, я думаю вопрос закрыт!

Спасибо за помощь, я думаю вопрос закрыт!
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
Заметил, что почему-то макрос не обрабатывает содержимое колонтитулов. Не подскажете как с этим справиться?