|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.10.2010, 18:59 | #1 |
Пользователь
Регистрация: 08.10.2010
Сообщений: 21
|
Макрос определения языка документа
Есть много файлов Ворд. Нужен макрос, который определит язык документа и как-то это отобразит (изменит имя файла, создаст текстовый файл с именем и языком и т.д.). Проблема осложняется тем, что документы могут быть на 2-х языках (параллельно или один за другим), кроме того, в тексте могут быть отдельные фразы на третьем языке. Кроме того, язык документа может быть не определен Вордом...
|
08.10.2010, 21:48 | #2 | |
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
Цитата:
|
|
09.10.2010, 00:18 | #3 |
Форумчанин
Регистрация: 29.09.2008
Сообщений: 378
|
Цитата из раздела справки Word "Об автоматическом определении языка":
"... МЕХАНИЗМ ОПРЕДЕЛЕНИЯ ЯЗЫКА С целью достижения наивысшей точности при анализе сочетаний букв в каждом предложении используются специальные языковые алгоритмы и статистические данные. Для отдельных слов и коротких фраз язык не определяется. При определении языка круг возможных решений постепенно сужается до набора языков, заданного при настройке Microsoft Word, в следующей последовательности: 1. Доступные для редактирования языки. 2. Язык, используемый по умолчанию в данном документе(определяется соответствующим параметром форматирования обычного стиля в активном шаблоне). ..." 3. Активный язык клавиатуры (если установлены несколько языков клавиатуры и раскладок клавиатуры). Определение языка производится одновременно с работой над текстом и не мешает пользователю. В новых документах проверка осуществляется с самого начала по мере ввода каждого предложения, а также при копировании или вставке в файл фрагментов текста. Если открывается документ, который ни разу не проверялся, проверке подвергается каждое предложение. Кроме того, заново проверяется любое предложение, если в него вносятся изменения.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
|
11.10.2010, 10:21 | #4 |
Пользователь
Регистрация: 08.10.2010
Сообщений: 21
|
Вот пока что нарыл:
MsgBox Application.Language показывает 1049, если язык Word русский. Selection.LanguageDetected (равно False, когда язык не определён, и когда язык определён — True). А вот как заставить Ворд автоматически язык определить - не знаю... |
13.10.2010, 19:26 | #5 |
Форумчанин
Регистрация: 29.09.2008
Сообщений: 378
|
А сколько языков? Потому как для распознания своими силами Ворду нужны словари соответствующих языков.
Перезапуск распознания языка: Код:
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
|
13.10.2010, 20:17 | #6 |
Форумчанин
Регистрация: 29.09.2008
Сообщений: 378
|
Еще светик к приведенному коду. Чтоб уж Word наверняка поработал, надо предварительно тексту присвоить язык, для которого установлены средства проверки правописания. Лучше всего подходит английский, т.к. он стоит везде. Конечный код будет выглядеть так:
Код:
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
|
29.10.2010, 17:21 | #7 |
Пользователь
Регистрация: 08.10.2010
Сообщений: 21
|
|
27.04.2011, 12:31 | #8 |
Пользователь
Регистрация: 08.10.2010
Сообщений: 21
|
Вот нашел макрос. Он устанавливает для всего документа параметр языка «русский», а для слов, начинающихся с латинской буквы – «английский». Зачем-то сделана прокрутка.
97 Ворд ругается на .NoProofing, в 2003 запускал - работает. Sub Select_Language() 'Выбор языка для проверки правописания Selection.WholeStory Selection.LanguageID = wdRussian Selection.NoProofing = False Selection.HomeKey Unit:=wdStory n1 = 0 w1 = "a" se1 = Selection.End se2 = -1 Do While se1 <> se2 w1 = Left(Trim(Selection.Words(1)), 1) If w1 <> "" Then n1 = Asc(w1) If (n1 >= 65 And n1 <= 90) Or (n1 >= 97 And n1 <= 122) Then Selection.Words(1).LanguageID = wdEnglishUS Selection.Words(1).NoProofing = False End If End If Selection.MoveRight Unit:=wdWord, Count:=1 se2 = se1 se1 = Selection.End Loop Application.CheckLanguage = True If se1 = se2 Then MsgBox "Конец документа" End Sub Немного поразмыслив, решил определение языка документа сделать "в лоб": поиск в файле букв, имеющихся в данном языке и отсутствующих в других, обязательно с непохожим начертанием. Таким образом, для русского буду искать э, ъ, ы, для украинского ї, є, ґ, в английском - например, z, f, s. Счетчики будут считать количество найденных букв и по окончании поиска добавлять к имени файла букву r, u и/или a (если соответствующие счетчики больше нуля). С счетчиками попробую разобраться сам, основная проблема (для меня) - код добавления буквы в имя файла... П.С. Еще немного поразмыслив, пришел к выводу, что самому мне это дело не осилить. У меня есть рабочий макрос для пакетной обработки файлов (работает в 97 Ворде). Кто возьмется вставить в него поиск букв, счетчик и переименование файла? За соответствующее вознаграждение, разумеется. Sub Макрос11111() Set WordObj = CreateObject("Word.Application") MyPath = "C:\Obrabotka\1\" 'указать путь к папке iFileName = Dir(MyPath) 'имя первого файла в папке. Не менять!!! Do While iFileName <> "" Set WordDoc = WordObj.Documents.Open(MyPath + iFileName) 'открываем первый файл WordObj.Visible = False 'можно его отображать, можно не отображать 'Здесь должен быть код по изменению файлов WordObj.Documents(iFileName).Close SaveChanges:=True 'сохраняем и закрываем файл iFileName = Dir 'получение следующего имени файла в папке. Не менять!!! Loop WordObj.Quit 'закрываем MS WORD Set WordDoc = Nothing 'освобождаем память Set WordObj = Nothing 'освобождаем память MsgBox "Файлы обработаны!", vbOKOnly + vbInformation, "Обработка файлов" End Sub Последний раз редактировалось lovial; 27.04.2011 в 14:07. |
27.04.2011, 19:51 | #9 |
Форумчанин
Регистрация: 29.09.2008
Сообщений: 378
|
Кто ругается? Перечислите поименно.
Не могу проверить в Word 97, но можно попробовать заменть. Аналогом .NoProofing = True является .LanguageID = wdNoProofing ' 1024. Ну а .NoProofing = False, соответствует присвоение какого либо языка, например .LanguageID = wdRussian. P.S. Что-то форум периодически тормозит, не могу даже зайти на этот сайт.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Последний раз редактировалось Вождь; 27.04.2011 в 19:53. |
28.04.2011, 15:50 | #10 |
Пользователь
Регистрация: 08.10.2010
Сообщений: 21
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Макрос: Обновить данные в документа Word | Alex9k | Microsoft Office Word | 0 | 22.07.2010 16:12 |
EXCEL.VBA. Макрос "точной" копии документа | xАлексейx | Фриланс | 5 | 12.07.2010 22:17 |
Прога для определения языка программирования | L4r4n | Помощь студентам | 1 | 10.06.2010 13:53 |
Макрос вставки файлов в листы-Необходимо изменить ниже приведённый макрос | as-is | Microsoft Office Excel | 4 | 25.02.2010 07:51 |
Как программно удалить макрос из документа ? | Николай IV | Microsoft Office Word | 14 | 08.07.2009 17:47 |