Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2015, 00:04   #1
inspirer161
 
Регистрация: 12.02.2015
Сообщений: 7
По умолчанию Макрос для выделения кириллицы в Word

Добрый день! нужна ваша помощь, так как с VBA вообще не знаком, а есть очень высокая необходимость создать один макрос для решения задачки. Разбираться нет возможности, времени вообще нету. Готов отблагодарить помощника за 500 рублей (перечислю на кошелёк или на карту Сбера или на телефон)

Вот что нужно:

Есть два документа в которых идёт в перемешку японские с русскими словами. Нужен макрос, чтобы можно было выделить русские слова и их копировать/вырезать, чтобы вставить в другой документ, так как объём текста приличный, большое количество русских слов среди японского текста это большой труд, поэтому нужен вот такой вот макрос. Если нужен документ для тренировки могу скинуть.

Надеюсь, на помощь и поддержку =)
inspirer161 вне форума Ответить с цитированием
Старый 13.02.2015, 06:42   #2
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

Цитата:
Если нужен документ для тренировки могу скинуть.
образец конечно не помешал бы
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 13.02.2015, 10:09   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

В первом приближении
Код:
Sub GetRus()
Dim s$, v
With CreateObject("vbscript.regexp")
  .Global = True
  .Pattern = "[А-ЯЁ-]+"
  .ignorecase = True
  For Each v In .Execute(ActiveDocument.Range)
    s = s & v & vbCrLf
  Next
End With
Documents.Add.Range.InsertAfter s
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 13.02.2015, 11:30   #4
inspirer161
 
Регистрация: 12.02.2015
Сообщений: 7
По умолчанию вот пример того, с чем нужно работать

Цитата:
Сообщение от Казанский Посмотреть сообщение
В первом приближении
Код:
Sub GetRus()
Dim s$, v
With CreateObject("vbscript.regexp")
  .Global = True
  .Pattern = "[А-ЯЁ-]+"
  .ignorecase = True
  For Each v In .Execute(ActiveDocument.Range)
    s = s & v & vbCrLf
  Next
End With
Documents.Add.Range.InsertAfter s
End Sub
Спасибо, позже проверю, этого достаточно будет?
Вложения
Тип файла: doc образец.doc (30.0 Кб, 12 просмотров)
inspirer161 вне форума Ответить с цитированием
Старый 13.02.2015, 12:09   #5
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Подправил
Код:
Sub GetRus()
Dim s$, v
With CreateObject("vbscript.regexp")
  .Global = True
  .Pattern = "[А-ЯЁ.,; ()-]+"
  .ignorecase = True
  For Each v In .Execute(ActiveDocument.Range)
    v = Trim(v)
    If Right$(v, 1) = ";" Then v = Left(v, Len(v) - 1)
    If Len(v) Then If v <> "-" Then s = s & Trim$(v) & vbCr
  Next
End With
Documents.Add.Range.InsertAfter s
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 14.02.2015, 01:57   #6
inspirer161
 
Регистрация: 12.02.2015
Сообщений: 7
Лампочка

Спасибо, сегодня днём напишу результат
inspirer161 вне форума Ответить с цитированием
Старый 14.02.2015, 13:46   #7
inspirer161
 
Регистрация: 12.02.2015
Сообщений: 7
По умолчанию

В принципе у тебя всё получилось. Макрос всё на русском языке нашёл, сам перетащил в другой документ,
который открыл сам же и всё расставил. Я проверил макрос на документе-образце.
Всё хорошо, но необходимо внести коррективы.

Нужно выделить самому одну из статеек или даже просто выделяю одно предложение и
макрос должен осуществить поиск русскоязычных слов только в пределах
выделенной части текста.
Далее. Найденные макросом русскоязычные слова должны копироваться и отправляться в буфер
обмена. Затем я сам укажу куда вставить скопированные макросом слова. макрос должен остановить свою работу на копировании и помещении в буфер обмена.
Затем идёт расстановка по иероглифам, это будет делать другой макрос.

Реально?
inspirer161 вне форума Ответить с цитированием
Старый 14.02.2015, 16:35   #8
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Пробуйте
Код:
Sub GetRus()
Dim s$, v
With CreateObject("vbscript.regexp")
  .Global = True
  .Pattern = "[А-ЯЁ.,; ()-]+"
  .ignorecase = True
  For Each v In .Execute(Selection.Range)
    v = Trim(v)
    If Right$(v, 1) = ";" Then v = Left(v, Len(v) - 1)
    If Len(v) Then If v <> "-" Then s = s & Trim$(v) & vbCrLf
  Next
End With
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") 'DataObject
  .SetText s
  .PutInClipboard
End With
MsgBox "Текст помещен в буфер обмена", vbInformation
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 14.02.2015, 17:08   #9
inspirer161
 
Регистрация: 12.02.2015
Сообщений: 7
По умолчанию не пойму, как копируется в буфер обмена

Цитата:
Сообщение от Казанский Посмотреть сообщение
Пробуйте
Код:
Sub GetRus()
Dim s$, v
With CreateObject("vbscript.regexp")
  .Global = True
  .Pattern = "[А-ЯЁ.,; ()-]+"
  .ignorecase = True
  For Each v In .Execute(Selection.Range)
    v = Trim(v)
    If Right$(v, 1) = ";" Then v = Left(v, Len(v) - 1)
    If Len(v) Then If v <> "-" Then s = s & Trim$(v) & vbCrLf
  Next
End With
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") 'DataObject
  .SetText s
  .PutInClipboard
End With
MsgBox "Текст помещен в буфер обмена", vbInformation
End Sub
Макрос, кажется, работает. После его запуска открывается окошечко с запросом разрешения
отправить в буфер обмена. Нажимаю "ОК" , окошечко исчезло, однако вытащить содержание
буфера обмена и вставить его в другом документе не могу. Три варианта вставить копию попробовал, но результата нет.
Может что-то не так делаю?
inspirer161 вне форума Ответить с цитированием
Старый 15.02.2015, 02:53   #10
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Цитата:
Сообщение от inspirer161 Посмотреть сообщение
После его запуска открывается окошечко с запросом разрешения отправить в буфер обмена.
Интересно. А сообщение "Текст помещен в буфер обмена", которое в предпоследней строке кода, появляется? Или Вы это сообщение имеете в виду?
Цитата:
Сообщение от inspirer161 Посмотреть сообщение
вытащить содержание
буфера обмена и вставить его в другом документе не могу. Три варианта вставить копию попробовал, но результата нет.
Может что-то не так делаю?
Не знаю, после запуска макроса я нажимаю Ctrl+V в Ворде или Блокноте и получаю текст.
Давайте попробуем проконтролировать в сообщении то, что копируется.
Во вложении - файл с макросом, запуск макроса назначен на сочетание клавиш Alt+Q.
Вложения
Тип файла: zip образец (1).zip (13.7 Кб, 21 просмотров)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для поиска и выделения слов Angry_Kitty Microsoft Office Word 11 07.10.2014 22:01
Заказ на макрос для Word evgeny_03 Microsoft Office Word 2 09.04.2012 10:37
Макрос для Word Squash Помощь студентам 1 28.03.2011 21:00
для работы написать макрос для Excel и Word.... smanna Microsoft Office Excel 2 30.11.2010 12:43
Нужно написать макрос для Word. Hoomer Фриланс 2 24.09.2008 12:19