Недавно получил задание создать макрос (что не яляется моей сферой деятельности по работе), для того что бы реализовать автоматическую подставку слов 16ти разных языков в соответсующие поля.
Проще говоря нажатием кнопки нужно иметь возможность перевлючать шаблон документа на нужный из 16ти (заранее переведенных) языков.
С Макросами на ВЫ, до сих пор не приходилось никак с ними работать. С программированием тоже не знаком.
Очень прошу подсказать, как и что искать, даже в поиске не знаю что вбивать нужно.
Друзья, нужна ваша помощь,
Недавно получил задание создать макрос (что не яляется моей сферой деятельности по работе), для того что бы реализовать автоматическую подставку слов 16ти разных языков в соответсующие поля.
Проще говоря нажатием кнопки нужно иметь возможность перевлючать шаблон документа на нужный из 16ти (заранее переведенных) языков.
С Макросами на ВЫ, до сих пор не приходилось никак с ними работать. С программированием тоже не знаком.
Очень прошу подсказать, как и что искать, даже в поиске не знаю что вбивать нужно.vintage
Это решается и без макросов, но даже если макрос, то нужен хотя бы пример части вашего шаблона, чтоб понять масштаб бедствия. Один из вариантов - это наличие 16ти скрытых листов с шаблоном на разных языках и открытие одного из них для работы по выбору.
Это решается и без макросов, но даже если макрос, то нужен хотя бы пример части вашего шаблона, чтоб понять масштаб бедствия. Один из вариантов - это наличие 16ти скрытых листов с шаблоном на разных языках и открытие одного из них для работы по выбору.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Благодарю за ответы. К сожалению предоставить образец книги не смогу, строго с конфиденциальностью . Книга состоит из 2 столбцов по 100 слов/предложений на каждый (примерно) Упустил отметить одну деталь, есть более около 5-6 разных варианций тех самых документов(таблиц), все они содержать все теже слова/предложения из заранее перевелденного списка слов, однако размещены на разных (со сдвигом строк) строках.
Благодарю за ответы. К сожалению предоставить образец книги не смогу, строго с конфиденциальностью . Книга состоит из 2 столбцов по 100 слов/предложений на каждый (примерно) Упустил отметить одну деталь, есть более около 5-6 разных варианций тех самых документов(таблиц), все они содержать все теже слова/предложения из заранее перевелденного списка слов, однако размещены на разных (со сдвигом строк) строках.vintage
vintage, скорее всего эти поля ваши можно или назвать кратко и интернационально или просто проиндексировать. Далее просто подстановка вместо них значений из справочника с переводами , язык документа может выбираться из выпадающего списка в отдельной ячейке или из формы через VBA другое дело что будут в документе оставаться формулы, но это совсем просто потом обработать.
vintage, скорее всего эти поля ваши можно или назвать кратко и интернационально или просто проиндексировать. Далее просто подстановка вместо них значений из справочника с переводами , язык документа может выбираться из выпадающего списка в отдельной ячейке или из формы через VBA другое дело что будут в документе оставаться формулы, но это совсем просто потом обработать.bmv98rus
Благодарю за помощь. Ближе к вечеру наверное успею переделать тогда файл и постораюсь выложить. Файл выложить не получится, специальный файрвол все вложения блокирует, исключение только корпоративная почта, но и она мониторится. Так что прошу помочь может вставкой формул тут как текста для марко, а там дальше попробую разобратся.
А пока такая вот идея пришла, подскажите пожалуйста. Можно ли запустить функцию или макро которое будет искать точное совпадение слов/словосочетаний и заменять их? как это видится мне:
1. Исходый язык длкумента - Английский; 1. В выпадающем списке выбираю нужный язык; 2. Макро ищет все соотвествия комбинаций Английский - "выбранный язык" и выполняет замену на соответствующие слова
Как я уже говорил ранее, слов (строк со словами) не много, около двухсот
Благодарю за помощь. Ближе к вечеру наверное успею переделать тогда файл и постораюсь выложить. Файл выложить не получится, специальный файрвол все вложения блокирует, исключение только корпоративная почта, но и она мониторится. Так что прошу помочь может вставкой формул тут как текста для марко, а там дальше попробую разобратся.
А пока такая вот идея пришла, подскажите пожалуйста. Можно ли запустить функцию или макро которое будет искать точное совпадение слов/словосочетаний и заменять их? как это видится мне:
1. Исходый язык длкумента - Английский; 1. В выпадающем списке выбираю нужный язык; 2. Макро ищет все соотвествия комбинаций Английский - "выбранный язык" и выполняет замену на соответствующие слова
Как я уже говорил ранее, слов (строк со словами) не много, около двухсотvintage
Сообщение отредактировал vintage - Среда, 17.04.2019, 03:42
По идее такое возможно , но 1. В списке соответствий должны быть выстроены фразы от длинных к коротким, для то чтоб корректно перевести словосочетания, если есть совпадения . Ну скажем "Customer services" - Служба клиентуры, "Customer" - Клиент 2. Должен учитываться регистр символов, ну и не секрет, что в разных языках порядок слов меняется и прямой перевод слов - одно, а фраз - совершенно иное. 3. Всякие форматирования, типа жирный и прочее - отдельный вопрос.
Возможно я и усложняю, но без примера - что-то предполагать иное сложно.
vintage, Работать в слепую - это то что мы любим!
По идее такое возможно , но 1. В списке соответствий должны быть выстроены фразы от длинных к коротким, для то чтоб корректно перевести словосочетания, если есть совпадения . Ну скажем "Customer services" - Служба клиентуры, "Customer" - Клиент 2. Должен учитываться регистр символов, ну и не секрет, что в разных языках порядок слов меняется и прямой перевод слов - одно, а фраз - совершенно иное. 3. Всякие форматирования, типа жирный и прочее - отдельный вопрос.
Возможно я и усложняю, но без примера - что-то предполагать иное сложно.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
а файл скачать можете? если правильно понял вашу мысль, то вот:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$1" Then ' работаем если изменения в ячейке B1 ' ДОПОЛНИТЕЛЬНЫЙ ЛИСТ "словарь" в верхней сроке по порядку названия языков, вниз под каждым перечень слов ' в ячейке В1 список языков, при изменении запускается макрос Dim Base, word, Lang, bLang, sourse, destin, lr, k Base = Me.Range("A5:A28").Value ' ГДЕ БУДЕМ ИСКАТЬ ПОХОЖИЕ СЛОВА Lang = Target.Value Application.EnableEvents = False Application.Undo bLang = Me.Range("B1").Value Me.Range("B1").Value = Lang Application.EnableEvents = True sourse = 0 destin = 0 With ThisWorkbook.Sheets("словарь") For f = 1 To 16 If .Cells(1, f).Value = Lang Then destin = f If .Cells(1, f).Value = bLang Then sourse = f Next f lr = .Cells(Rows.Count, 1).End(xlUp).Row For k = 1 To UBound(Base) For f = 2 To lr If Base(k, 1) = ThisWorkbook.Sheets("словарь").Cells(f, sourse).Value Then Base(k, 1) = ThisWorkbook.Sheets("словарь").Cells(f, destin).Value Exit For End If Next f Next k End With Me.Range("A5:A28").Value = Base End If End Sub
[/vba]
а файл скачать можете? если правильно понял вашу мысль, то вот:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$1" Then ' работаем если изменения в ячейке B1 ' ДОПОЛНИТЕЛЬНЫЙ ЛИСТ "словарь" в верхней сроке по порядку названия языков, вниз под каждым перечень слов ' в ячейке В1 список языков, при изменении запускается макрос Dim Base, word, Lang, bLang, sourse, destin, lr, k Base = Me.Range("A5:A28").Value ' ГДЕ БУДЕМ ИСКАТЬ ПОХОЖИЕ СЛОВА Lang = Target.Value Application.EnableEvents = False Application.Undo bLang = Me.Range("B1").Value Me.Range("B1").Value = Lang Application.EnableEvents = True sourse = 0 destin = 0 With ThisWorkbook.Sheets("словарь") For f = 1 To 16 If .Cells(1, f).Value = Lang Then destin = f If .Cells(1, f).Value = bLang Then sourse = f Next f lr = .Cells(Rows.Count, 1).End(xlUp).Row For k = 1 To UBound(Base) For f = 2 To lr If Base(k, 1) = ThisWorkbook.Sheets("словарь").Cells(f, sourse).Value Then Base(k, 1) = ThisWorkbook.Sheets("словарь").Cells(f, destin).Value Exit For End If Next f Next k End With Me.Range("A5:A28").Value = Base End If End Sub
Если это действительно шаблон, то положение текста, требующего замены на соответствующий язык - статично. Тогда создать лист на котором в первом столбце адреса ячеек, со второго по 17 под шапкой с названием языка требуемый в данной ячейке текст. Тогда просто пробегаем при выборе в выпадающем списке языка и заменяем по данным адресам ячеек их значения на текст данного языка.
Если это действительно шаблон, то положение текста, требующего замены на соответствующий язык - статично. Тогда создать лист на котором в первом столбце адреса ячеек, со второго по 17 под шапкой с названием языка требуемый в данной ячейке текст. Тогда просто пробегаем при выборе в выпадающем списке языка и заменяем по данным адресам ячеек их значения на текст данного языка.anvg