Тема: Выделить текст, имеющий такой же формат
Подскажите, как программно реализуется команда Выделить текст, имеющий такой же формат контекстного меню Стили в Ворде 2007?
С уважением
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Подскажите, как программно реализуется команда Выделить текст, имеющий такой же формат контекстного меню Стили в Ворде 2007?
С уважением
Application.Run MacroName:="SelectSimilarFormatting"
Спасибо. Я так понял это внутренний макрос приложения? Подскажите тогда еще по данному вопросу: каков состав этих макросов в приложении; где можно их просмотреть; и существует ли возможность просмотреть структуру самого макроса?
Насколько я знаю, внутренние команды Word не имеют отношения Visual Basic, и для многих команд аналог на Visual Basic написать невозможно.
Хорошо, а список-то данных макросов где можно посмотреть (в связке с выполняемыми командами)?
MS Word > Alt+F8 > в списке "Макросы из" выбираем "Команды Word" > выбираем команду и читаем "Описание"
Спасибо, все понятно.
Приветствую.
Возник такой вопрос.
Если у меня есть разношерстный текст.
Возможно ли получить массив этих самых строк, с нужным мне стилем.
Алгоритм
1)Мы пробегаем по всему документу ищем нужный нам стиль
2)получаем начальную и конечную позиции символа начала и конца стиля
3)переходим к другой точке нахождения стиля.
все эти данные пишем в массив.
Буду очень признателен за ответ.
...Возник такой вопрос...
Public Sub Стилизованные_фрагменты_в_главной_части_документа()
Const c_StyleName$ = "Заголовок 1" ' искомый стить
Dim R As Word.Range
Dim COL As New Collection
' готовим поиск стиля
Set R = ActiveDocument.Range(0, 0)
With R.Find
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Wrap = Word.wdFindStop
.Format = True
.Style = c_StyleName
End With
' цикл поиска
Do
' ищем
R.Find.Execute
If R.Find.Found <> True Then Exit Do
' запоминаем найденный фрагмент
COL.Add Item:=R.Duplicate
' обработка 1
'With R.Duplicate
' ............................
'End With
' ищем далее
If R.End >= R.StoryLength - 1 Then Exit Do
R.Collapse Direction:=Word.wdCollapseEnd
Loop
' обработка 2
'For Each R In COL
' ............................
'Next R
' освобождаем
Set COL = Nothing
End Sub
Да действительно работает.
Спасибо огромное.
Пришлось немного поколдовать, но разобрался.
Но если у нас при конвертации текста ниже (при этом мы выбираем только транслит)
क्क, kka, क्ख, kkha, क्च, kca, १क्त, 1kta, २क्त 2kta क्त्व, ktva, क्म, kma, क्य, kya, क्र, kra, क्श, kça, क्श्म, kçma, क्श्य, kçya, ख्य
предвещает смещение сконвертированого текста влево, то есть то, что мы и имеем क्क, kka,
Изначально было просто kka, => क्क, kka, так вот как тогда быть?. Я дописал
Dim i, temp As Integer
i = 0
For Each R In COL
i = i + 1
If (i = 1) Then
ActiveDocument.Range(Start:=COL.Item(i).Start, End:=COL.Item(i).End).Select
Else
temp = temp + Len(COL.Item(i - 1))
ActiveDocument.Range(Start:=COL.Item(i).Start + temp, End:=COL.Item(i).End + temp).Select
End If
Call Trans_2_Dev_Multistring_F5
но тут же столкнулся с проблемой, если у меня помещаемый в итем текст имеет пробел вначале, моя функция конвертинга If VBA.Len(arrText(i)) <= 0 Then Exit Sub вылетает. И меня вполне устраивает это.
А как сделать чтоб в итем не попадал пробел вначале?
Попытка удалить его перед помещением в итем ведет к тому, что этот пробел удаляется в документе.
If R.Find.Found <> True Then Exit Do
If Left(R.Duplicate, 1) = " " Then
R.Duplicate.Text = Right(R.Duplicate.Text, Len(R.Duplicate.Text) - 1)
End If
Может и несу бред. Запутался я что-то.
...Запутался...
Можно организовать урезание пробелов в моей функции, но это ошибочный подход, т.к. в найденных фрагментах может быть что угодно. Поэтому, ваша функция конвертации должна не обрезать текст, а обрабатывать только конвертируемые знаки. Ошибка в ней.
Тяжело собрать что-то из кусков непонятно чего. Так же, как и советовать, не зная задачи.
Вот попробовал описать проблему визуально.
Когда мы производим поиск по тексту
क्क, kka, क्ख, kkha,
мы находим kka, выделяем его и производим конвертацию.
После конвертации конвертер вставит текст слева от выделения. Дальше нам нужно перейти к следующему слову kkha, но так как я не знаю как получить координаты следующего слова, я на него не могу перейти.
внешняя ссылка
Пользоваться поиском по словам не представляется возможным, так как могут быть повторы.
Есть ли способ перейти к следующему слову и выделить его?
ссылка на youtube
Application.Run MacroName:="SelectSimilarFormatting"
В прилагаемом файле 2-я и 4-я строки имеют форматирование "Все прописные". Мне нужно преобразовать эти строки из строчных букв с указанным форматированием в прописные без форматирования.
Я ставлю курсор на 2-ю строку и выполняю следующий макрос:
Sub Macro1()
Application.Run MacroName:="SelectSimilarFormatting"
Selection.Range.Case = wdNextCase
Selection.Range.Case = wdNextCase
Selection.Range.Case = wdNextCase
Selection.MoveRight Unit:=wdCharacter, Count:=1
End Sub
Обе строки выделяются, но изменение регистра производится только для 4-й строки!
Selection.Range - это последний из выбранных фрагментов.
Команды есть для всех кнопок интерфейса Word, в том числе для смены регистра букв:
Application.Run MacroName:="SelectSimilarFormatting"
Application.Run MacroName:="ChangeCase"
Список всех команд:
внешняя ссылка
Selection.Range - это последний из выбранных фрагментов.
Команды есть для всех кнопок интерфейса Word, в том числе для смены регистра букв:Application.Run MacroName:="SelectSimilarFormatting"
Application.Run MacroName:="ChangeCase"Список всех команд:
внешняя ссылка
Спасибо. Но после первого применения данного макроса выделение снимается, как и форматирование.
Можно ли сделать, чтобы обе строки преобразовались в состояние wdUpperCase?
Можно ли запустить команду Application.Run MacroName:="ChangeCase" с параметром wdUpperCase?
Нет, только по кругу.
Придется загнать поиск в цыкл и работать с Range.
Можно поизвращатся с Selection, используя какую-либо метку. Например цвет:
Application.Run MacroName:="SelectSimilarFormatting"
Selection.Font.Color = 1
Application.Run MacroName:="ChangeCase"
Application.Run MacroName:="SelectSimilarFormatting"
Application.Run MacroName:="ChangeCase"
Application.Run MacroName:="SelectSimilarFormatting"
Selection.Font.ColorIndex = wdAuto
Можно поизвращатся с Selection, используя какую-либо метку. Например цвет:
Application.Run MacroName:="SelectSimilarFormatting"
Selection.Font.Color = 1
Application.Run MacroName:="ChangeCase"
Application.Run MacroName:="SelectSimilarFormatting"
Application.Run MacroName:="ChangeCase"
Application.Run MacroName:="SelectSimilarFormatting"
Selection.Font.ColorIndex = wdAuto
Добавить еще одну пару операторов - и все отлично работает!
Еще для справки: во что мы здесь покрасили строки оператором Selection.Font.Color = 1? Это черный цвет?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Выделить текст, имеющий такой же формат
В своей деятельности вы наверняка пользуетесь таким мощным текстовым редактором, каким является Microsoft Word. Наш сайт о Microsoft Office Word даст ответ про: как в worde вставить картинку в рамку и написать текст написать текст на картинке. И, конечно, если работа с текстами в Ворде составляет значительную долю вашего труда, вам приходила в голову мысль о том, как оптимизировать ее. На портале о Microsoft Office Word вы узнаете про: как сделать текст разрывов.
Этот вопрос является приоритетным на форуме Ворд Экспер, посвященном работе с различными версиями программы. На портале о Microsoft Office Word вы узнаете про: как в новом ворде сделать рамку. Форум, прежде всего, ориентирован на написание разнообразных макросов и шаблонов для Ворда. Тут есть готовые решения той или иной задачи, разбираются различные пути. Наш сайт о Microsoft Office Word даст ответ про: word 2003 после редактирования чертежей. Вы найдете все о макросах – от самых азов для новичков, до тонкостей, которыми делятся друг с другом опытные пользователи. На портале о Microsoft Office Word вы узнаете про: как найти случайно удаленный текст. В одном из подразделов форума вы можете оставить описание своей проблемы и сделать заказ на разработку макроса или шаблона. Наш сайт о Microsoft Office Word даст ответ про: рисунки для границы заливки.
Конечно, автоматизация, не единственная тема форума. Здесь обсуждаются настройки различных версий Ворда и любые другие вопросы, связанные с самой программой, редактированием, написанием, рецензированием текстов в Ворде. На портале о Microsoft Office Word вы узнаете про: как в ворде проставить нумерацию страниц со второй. Самым часто возникающим проблемам посвящен отдельный раздел, который стоит посетить в первую очередь. На портале о Microsoft Office Word вы узнаете про: какой ключ нужно ввести в microsoft word.
Если у вас есть чем поделиться с другими пользователями Ворда, вы можете выкладывать свои решения в соответствующих подразделах. На портале о Microsoft Office Word вы узнаете про: как убрать ghfde. xfcnm gjckt kbytqrb ghurhenrb d jabct 2010.