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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2015, 14:13   #11
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, 14:56   #12
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

В этом варианте:
- избавился от русских букв в коде;
- текст в буфер помещается через новый документ;
- нет сообщений.
Это мой окончательный вариант, больше менять не буду.
Код:
Sub GetRus()
Dim s$, v
With CreateObject("vbscript.regexp")
  .Global = True
  .Pattern = "[" & ChrW$(1040) & "-" & ChrW$(1071) & ChrW$(1025) & ".,; ()-]+"
  .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
Application.ScreenUpdating = False
With Documents.Add
  .Range.InsertAfter s
  .Range.Copy
  .Close wdDoNotSaveChanges
End With
Application.ScreenUpdating = True
End Sub
Вложения
Тип файла: zip образец (2).zip (11.2 Кб, 11 просмотров)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 15.02.2015, 19:46   #13
inspirer161
 
Регистрация: 12.02.2015
Сообщений: 7
Хорошо Спасибо!

Цитата:
Сообщение от Казанский Посмотреть сообщение
В этом варианте:
- избавился от русских букв в коде;
- текст в буфер помещается через новый документ;
- нет сообщений.
Это мой окончательный вариант, больше менять не буду.
Код:
Sub GetRus()
Dim s$, v
With CreateObject("vbscript.regexp")
  .Global = True
  .Pattern = "[" & ChrW$(1040) & "-" & ChrW$(1071) & ChrW$(1025) & ".,; ()-]+"
  .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
Application.ScreenUpdating = False
With Documents.Add
  .Range.InsertAfter s
  .Range.Copy
  .Close wdDoNotSaveChanges
End With
Application.ScreenUpdating = True
End Sub
Этот вариант работает, благодарю, не зря кушаете свой хлеб =)
inspirer161 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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