Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 7
1
Word

Автоматический перевод текста по шаблону [RUS -> ENG]

14.01.2020, 08:56. Показов 3224. Ответов 12

Author24 — интернет-сервис помощи студентам
Здравствуйте! Подскажите, как решить следующую задачу:
- есть отчет в word, который формирует программа.
- В отчете применяются одни и те же слова, предложения, обозначения на русском языке.
- Их может быть больше, или меньше, в зависимости от входных условий.
- Но важно, что все слова, предложения и обозначения заранее известны.

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

Как я вижу решение поставленной задачи - сформировать excel таблицу, где в одном столбце вписаны известные слова, предложения и обозначения на русском языке, а во втором столбце соответствующие им переводы на английском. Таблицу можно пополнять. Далее, должен быть какой-то макрос в word в виде надстройки. Каждый, кому это будет необходимо сможет себе эту надстройку установить и пользоваться. Макрос по команде пользователя (нажатие пиктограммы в надстройке) будет осуществлять поиск в отчете слова, предложения и обозначения, сравнивать их с таблицей excel (которая размещена в известном месте, например Мои документы), и осуществлять замену.

Прошу помочь в решении этой задачи.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2020, 08:56
Ответы с готовыми решениями:

Перевод Eng to Rus через Regex
Есть код, переводящий слова, набранные в английской раскладке,в русскую: string Ru...

Язык Eng/Rus
У меня только Енг буквы в компе (Ноуте) а как поставить что бы ещё и русс были,я не знаю =(...

RUS или ENG
Вопрос к опытным програмистам на delohi 7, где удобней работать в руссефицированной или в...

Пропал значок RUS\ENG в языковой панели
подскажите, у меня такая фигня вообщем пропал значок языковой панели RUS\ENG, пробывал правой...

12
109 / 60 / 27
Регистрация: 22.02.2018
Сообщений: 189
14.01.2020, 09:30 2
составляете словарь, как вы написали, в два столбца. и далее циклом проходите по всем строкам словаря, и функцией
Visual Basic
1
2
3
    For i = 1 to ...
        Replace(ТЕКСТ, РУС(i), АНГ(i))
    Next i
"переводите"
1
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 7
14.01.2020, 10:07  [ТС] 3
Aleksan7, спасибо вам. Уверен, что код, написанный вами понятен профессионалам, но я таковым, к сожалению, не являюсь. Максимум, что я могу сделать, это прочесть чужой код, попробовать его понять, и местами подкорректировать, или адаптировать, под свои нужны. С вашим же кодом, я чувствую, нужно делать и начало, и завершение кода. Если вас не затруднит, распишите подробнее.
0
109 / 60 / 27
Регистрация: 22.02.2018
Сообщений: 189
14.01.2020, 10:22 4
jonny0, на теоретический вопрос - теоретический ответ
приложите файлы для работы, с вордом не работал, но попробую из соседней темы приемы украсть, там в вордовском файле ищут совпадения со списком(тем же словарем) в екселе и выделяют цветом, по сути то что нам нужно, только не выделять цветом а заменять.
0
Модератор
Эксперт MS Access
12082 / 4942 / 791
Регистрация: 07.08.2010
Сообщений: 14,510
Записей в блоге: 4
14.01.2020, 13:06 5
Цитата Сообщение от jonny0 Посмотреть сообщение
решить следующую задачу: есть отчет в word, который формирует программа
любой отчет - это сочетание постоянной и переменной информации

- постоянная - это название отчета,его логотип, шапки таблиц, подписи, примечания
- переменная -это данные таблиц

но в любом случае прежде чем что-то проектировать, надо увидеть примеры того и другого
это подразумевает, что надо прежде всего увидеть достаточно реалистический шаблон отчета, где должно быть помечены места, в которых может быть разный язык текста

перевод слов(словосочетаний) - это одно
но в отчетах часто могут быть предложения, а значит грамматика должна учитывать например пол или обращение типа мистер/мисс или падежи
0
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 7
14.01.2020, 15:51  [ТС] 6
Дайте мне немного времени, я все подготовлю
0
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 7
17.01.2020, 16:45  [ТС] 7
Готово! посмотрите, пожалуйста.
Вложения
Тип файла: doc Отчет [рус. яз].doc (79.0 Кб, 4 просмотров)
Тип файла: doc Отчет [англ. яз].doc (80.0 Кб, 4 просмотров)
Тип файла: xlsx База слов.xlsx (11.4 Кб, 9 просмотров)
0
109 / 60 / 27
Регистрация: 22.02.2018
Сообщений: 189
20.01.2020, 15:25 8
jonny0, попробуйте
в ячейке А1 путь к файлу ексель база слов
А2 путь к файлу отчета который нужно перевести
А3 путь куда сохранится переведенный отчет

работает долго, так как это простой перебор

файлы с которыми будет работать макрос должны быть закрыты

вот код или файл во вложении

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
Sub Perevod()
    Dim wordtext As Object
    Dim xlwb As Object
    Set xlwb = GetObject(ThisWorkbook.Sheets(1).Cells(1, 1))
    xlwb.Windows(1).Visible = 1
    aSlova = xlwb.Sheets(1).UsedRange.Value
    xlwb.Close False
    Set wordtext = GetObject(ThisWorkbook.Sheets(1).Cells(2, 1))
    wordtext.Windows(1).Visible = 1
    For i = 1 To UBound(aSlova)
        With wordtext.Range.Find
            .ClearFormatting
            .Text = aSlova(i, 1)
            With .Replacement
                .ClearFormatting
                .Text = aSlova(i, 2)
            End With
            .Execute Replace:=wdReplaceAll
        End With
    Next i
    wordtext.SaveAs (ThisWorkbook.Sheets(1).Cells(3, 1)) & "\" & Replace(wordtext.Name, (Split(wordtext.Name, ".")(UBound(Split(wordtext.Name)))), "англ.яз.doc")
    wordtext.Close False
End Sub
Вложения
Тип файла: zip Лист Microsoft Excel.zip (16.1 Кб, 3 просмотров)
1
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 7
21.01.2020, 09:47  [ТС] 9
Aleksan7, спасибо вам большое! Все работает. Есть некоторые косяки с переводом, но это поправимо, думаю. Есть вопрос, в развитии решения: 1. можно ли в вашем excel файле сделать список файлов, требующих перевода? Т.е. макрос будет поочередно переводить все файлы по списку. 2. можно ли задавать диапазон листов для перевода? Например из 6-ти листов перевод требуют только 1-й и 3-й, или с 3-го по 6-й?
0
109 / 60 / 27
Регистрация: 22.02.2018
Сообщений: 189
21.01.2020, 10:54 10
jonny0,
1. список файлов это легко, можно например указать папку или список папок откуда все файлы переведутся
2. с вордом первый раз что то делал, не знаю особо в нём ничего. нужно у специалистов спросить, здесь есть такие

если никто не сделает, то попозже допишу.
так нужен список файлов или список папок откуда будут браться файлы?
0
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 7
21.01.2020, 10:56  [ТС] 11
Aleksan7, список файлов в виде полных путей к ним.
0
109 / 60 / 27
Регистрация: 22.02.2018
Сообщений: 189
21.01.2020, 17:09 12
Лучший ответ Сообщение было отмечено jonny0 как решение

Решение

jonny0, список файлов в столбце В,
A1 словарь
A2 путь сохранения
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
Sub Perevod()
    Dim wordtext As Object
    Dim xlwb As Object
    Set xlwb = GetObject(ThisWorkbook.Sheets(1).Cells(1, 1))
    xlwb.Windows(1).Visible = 1
    aSlova = xlwb.Sheets(1).UsedRange.Value
    aD = ThisWorkbook.Sheets(1).UsedRange.Value
    xlwb.Close False
    For k = 1 To UBound(aD)
        If ThisWorkbook.Sheets(1).Cells(k, 2) <> "" Then
            Set wordtext = GetObject(ThisWorkbook.Sheets(1).Cells(k, 2))
            wordtext.Windows(1).Visible = 1
            For i = 1 To UBound(aSlova)
                With wordtext.Range.Find
                    .ClearFormatting
                    .Text = aSlova(i, 1)
                    With .Replacement
                        .ClearFormatting
                        .Text = aSlova(i, 2)
                    End With
                    .Execute Replace:=wdReplaceAll
                End With
            Next i
        wordtext.SaveAs (ThisWorkbook.Sheets(1).Cells(2, 1)) & "\" & Replace(wordtext.Name, (Split(wordtext.Name, ".")(UBound(Split(wordtext.Name, ".")))), "англ.яз.doc")
        wordtext.Close False
        End If
    Next k
End Sub
1
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 7
23.01.2020, 11:58  [ТС] 13
Aleksan7, спасибо огромное! Очень выручили.
0
23.01.2020, 11:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2020, 11:58
Помогаю со студенческими работами здесь

Стоимость клика AdSense vs AdWords Rus vs Eng
Сразу говорю, тематика моего сайта развлечение. Клики недорогие. Но разница меня, скажем просто...

Переводчик eng - rus (подобие Punto Switcher)
Значит переводчик действует так: меняет f на а (русскую) или g на п то есть он переведет &quot;ghbdtn&quot;...

Нужен visual studio 2010 - 2013 rus - eng
Дайте пожалуйста ссылочку на microsoft visual studio 2010 или 2013 желательно русскую версию (...

Нужен Установщик Windows 7 Interprise (Корпоративная) RUS/ENG,
Здравствуйте Ребята, Не могу найти Установщик Windows 7 Interprise, может у кого то найдется....


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru