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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2009, 16:07   #1
sergeos
Пользователь
 
Регистрация: 08.06.2009
Сообщений: 11
Восклицание Таблицы в WORD. Перебор ячеек или поиск?

Привет!
Возникла задача. В документе есть текст и таблицы. В некоторых местах текста есть специальный скрытый текст(метки). Эти метки могут находится и в середине таблиц. А проблема такая, есть макрос от стороннего разработчика который при форматировании текста в специальный местный формат, удаляет текст, если он скрытый, из таблицы.
Получается, что мне нужно, перед стартом этого макроса каким то образом запоминать, где и в какой ячейке расположена метка, чтобы после отработки макроса, можно было бы заново её поставить.
2 вопроса:
1. Как можно пособирать метки, с проверкой, находится ли она в таблице?
2. Как восстановить адрес метки, если после отработки макроса, таблица переводится в текстовый формат?
sergeos вне форума Ответить с цитированием
Старый 08.06.2009, 16:24   #2
CaptainNemo
Пользователь
 
Аватар для CaptainNemo
 
Регистрация: 02.06.2009
Сообщений: 49
По умолчанию

Файл приложите.
Android & Linux
CaptainNemo вне форума Ответить с цитированием
Старый 08.06.2009, 16:50   #3
sergeos
Пользователь
 
Регистрация: 08.06.2009
Сообщений: 11
По умолчанию

вот тестовый файл.
мне нужно както запоминать положения меток перед выполнением некоторого макроса, который удаляет текст, если он скрыт.

второй файл result.doc это файл результат работы макроса, т.е. те метки что были в таблице, сейчас не присутствуют. ихи прибило.
а мне требуется восттановить как было, вернуть метки в псевдографическую таблицу.
Вложения
Тип файла: doc test.doc (24.0 Кб, 24 просмотров)
Тип файла: doc result.doc (24.5 Кб, 17 просмотров)

Последний раз редактировалось sergeos; 08.06.2009 в 17:01.
sergeos вне форума Ответить с цитированием
Старый 08.06.2009, 17:33   #4
CaptainNemo
Пользователь
 
Аватар для CaptainNemo
 
Регистрация: 02.06.2009
Сообщений: 49
По умолчанию

Запомнить метки можно так:

Код:
Sub Метки()
With ActiveDocument.Tables(1).Range
For i = 1 To .Cells.Count
If .Cells(i).Range.Font.Hidden <> 0 Then Debug.Print _
"Ячейка №" & i & " содержит метки"
Next i
End With
End Sub
Android & Linux

Последний раз редактировалось CaptainNemo; 08.06.2009 в 17:37.
CaptainNemo вне форума Ответить с цитированием
Старый 08.06.2009, 18:19   #5
sergeos
Пользователь
 
Регистрация: 08.06.2009
Сообщений: 11
По умолчанию

так. спасибо. решение понял.
а теперь вопрос, как вернуть их в псевдографическую таблицу

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

дело в том, что кодированный текст должен быть той же длины, что и текст по умолчанию, однако, в нём должна присутствовать метка.

пока такая идея только.
sergeos вне форума Ответить с цитированием
Старый 08.06.2009, 19:21   #6
CaptainNemo
Пользователь
 
Аватар для CaptainNemo
 
Регистрация: 02.06.2009
Сообщений: 49
По умолчанию

Признаюсь сразу, я в MS Word особо не силён. Но я бы решил вашу задачу без программирования за минуту, вне зависимости от величины вашей таблицы.
1)Для исходной таблицы:
Жмёте Ctrl+A -> шрифт - > снимаете галку «Скрытый». Таким образом делаете ваши метки видимыми. Перегоняете этот файл в псевдографическую таблицу.
2)Открываете эту таблицу в MS Word и снова делаете метки скрытыми:
Ctrl+H -> В поле найти вводите вот так:
Код:
 \{*\}
и внизу ставите птичку «Подстановочные знаки». А в поле «Заменить» ничего не вводите, просто активируйте его и затем формат - > шрифт –> скрытый.
Android & Linux
CaptainNemo вне форума Ответить с цитированием
Старый 09.06.2009, 16:57   #7
sergeos
Пользователь
 
Регистрация: 08.06.2009
Сообщений: 11
По умолчанию

так, отлично, ясность.
на странице по ряду причин я не могу отображать скрытый текст.
как в коде можно найти в таблице ячеку в которой есть скрытый текст?
sergeos вне форума Ответить с цитированием
Старый 09.06.2009, 17:57   #8
CaptainNemo
Пользователь
 
Аватар для CaptainNemo
 
Регистрация: 02.06.2009
Сообщений: 49
По умолчанию

Я же уже писал код выше. В Immediate Widow отображает адреса ячеек, в которых есть скрытый текст. Ну, вот например, красным можно выделить ячейки со скрытым текстом в таблице

Код:
Sub НайтиЯчейкуСоСкрытымТекстом()
Dim myCell As Cell
If ActiveDocument.Tables.Count > 0 Then
For Each myCell In ActiveDocument.Tables(1).Range.Cells
    If myCell.Range.Font.Hidden Then _
    myCell.Range.Shading.BackgroundPatternColor = wdColorRed
Next myCell
End If
End Sub
Android & Linux
CaptainNemo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка разбиения ячеек в Word KiSH333 Общие вопросы Delphi 0 02.04.2009 10:02
Полный перебор или есть другие варианты? androidvsu Помощь студентам 8 12.03.2009 14:07
Перебор вариантов... или что-то такое elsin Общие вопросы Delphi 3 15.01.2009 22:13
Как вычислять значения вне таблицы WORD, с использованием данных из таблицы WORD prikolist Microsoft Office Word 6 21.11.2008 13:17