powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Поиск скрытого текста из макроса Word
3 сообщений из 3, страница 1 из 1
Поиск скрытого текста из макроса Word
    #34331402
Emu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Emu
Гость
Снова здравствуйте

Появилась необходимасть сделать поиск скрытого поиска из макроса ... В текст помещаю скрытые метки (текстовые символы) - #..#. Необходимо из макроса найти текст заключённый между ними...

Использую такой метод, который в одной из тем предложил Goldminer:

Function find_my_marker() As String
Dim r As Range
Dim n0 As Integer
Dim n1 As Integer

Set r = ActiveDocument.Range
r.Find.Execute FindText:="#"
n0 = r.End
r.Find.Execute FindText:="#"
n1 = r.Start
find_my_marker = ActiveDocument.Range(n0, n1).Text
End Function

Но проблема в том, что скрытый текст так найти нельзя... Таких свойств для текста в поиске, похоже и нет...
...
Рейтинг: 0 / 0
Поиск скрытого текста из макроса Word
    #34332448
lena_####
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Emu

В Word'е 2002 я доэкспериментировалась до таких вот результатов.

1. Чтобы стал возможен поиск скрытого текста (под срытым текстом я понимала текст, у которого Font.Hidden = True) нужно включить режим отображения Непечатаемых знаков:

Код: plaintext
ActiveWindow.ActivePane.View.ShowAll = True

2. Если в качестве родительского объекта объекта Find выступает Range (как в Вашем примере), то поиск не заканчивается ничем - такая вот конструкция:

Код: plaintext
1.
2.
3.
Dim r As Range
ActiveWindow.ActivePane.View.ShowAll = True
Set r = ActiveDocument.Range
Debug.Print r.Find.Execute(FindText:="#", Wrap:=wdFindContinue)

возвращает False. При этом попытки поиска не скрытого текста оказываются успешными.

3. Если в качестве родительского объекта объекта Find выступает Selection, то поиск оказывается результативным - такая вот конструкция:

Код: plaintext
1.
ActiveWindow.ActivePane.View.ShowAll = True
Debug.Print Selection.Find.Execute(FindText:="#", Wrap:=wdFindContinue)

возвращает True.

4. Тот пример, на который Вы ссылаетесь и код которого используете (пример Goldminer 'а) в Вашем случае малополезен. Причина в следующем: в примере Goldminer 'а ведется поиск фрагмента в обкладках "{{{" и "}}}" (т.е. открывающие и закрывающие "теги" различаются). В вашем же случае они одинаковые: "#". Поэтому функция (в ней я заменила Range на Selection ну и кое-что добавила):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Function find_my_marker() As String
  Dim n0 As Integer, n1 As Integer
  
  Application.ScreenUpdating = False
  ActiveWindow.ActivePane.View.ShowAll = True
  
  Selection.Find.Execute FindText:="#"
  n0 = Selection.End
  Selection.Find.Execute FindText:="#"
  n1 = Selection.Start
  
  ActiveWindow.ActivePane.View.ShowAll = False
  Application.ScreenUpdating = True
  
  find_my_marker = ActiveDocument.Range(n0, n1).Text
End Function

будет работать, но для нее по сути дела "#" не обкладки, помечающие какой-то текст, а просто сепараторы, и она вернет любой фрагмент, который находится между ними (короче говоря, сделает больше чем надо).

Так что, на мой взгляд, стоит придумать некое подобие открывающих и закрывающих (скрытых) тегов. Это существенно облегчит задачу парсинга Вашего текста.
...
Рейтинг: 0 / 0
Поиск скрытого текста из макроса Word
    #34334988
Emu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Emu
Гость
lena_#### большое спасибо, просто оче-е-е-ень помогло :)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Поиск скрытого текста из макроса Word
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]