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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2011, 14:18   #1
6aHaH4uk
 
Регистрация: 31.10.2011
Сообщений: 7
По умолчанию Работа с таблицей в Microsoft Word

Подскажите, как с помощью VBA проверить существует ли ячейка в таблице созданной в microsoft word?

Т.е.,существует таблица, в которой некоторые ячейки объединены между собой. В одному столбце ячейки существуют, в других нет.

Я хочу с помощью цикла проверить поочередно все строчки в одном столбце существует ли необходимые в них ячейки...

Вот как я пытался, но код не работает
PHP код:
Dim i as integer
Dim allrows 
as integer
Dim TableWord 
As Word.Table
 Set TableWord 
ActiveDocument.Tables(1)
allrows TableWord.Rows.Count
 
For 1 To allrows
If TableWord.Cell(i2) = true Then
MsgBox 
(TableWord.Cell(i2).Range.Text)
End if
Next 
НУждаюсь в редактировании 7 строки!!!
6aHaH4uk вне форума Ответить с цитированием
Старый 08.12.2011, 14:52   #2
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

Код:
If TableWord.Cell(i, 2) = true Then
Здесь ошибка в том, что
Код:
TableWord.Cell(i, 2)
является объектом
Код:
Row
, а в условии вы его проверяете как булево значение
Код:
True
, по этому независимо от того, есть ли в таблице объединенные ячейки у Вас будет выводиться ошибка
Я тут придумал алгоритм проверки объединенных ячеек, но надо кое-что проверить, выложу позже........
Пименов Александр вне форума Ответить с цитированием
Старый 08.12.2011, 15:16   #3
6aHaH4uk
 
Регистрация: 31.10.2011
Сообщений: 7
По умолчанию

Спс за помощь, буду ждать
6aHaH4uk вне форума Ответить с цитированием
Старый 08.12.2011, 17:02   #4
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

>Я тут придумал алгоритм проверки объединенных ячеек, но надо кое-что проверить, выложу позже
Боюсь, что его не существует...
Ципихович Эндрю вне форума Ответить с цитированием
Старый 08.12.2011, 23:25   #5
6aHaH4uk
 
Регистрация: 31.10.2011
Сообщений: 7
По умолчанию

ну а может мне кто то посоветует как поступить проще, чтобы реализовать поиск в таблице word по 2м значениям???

т.е. к примеру в одном столбце встречаются статьи УК: "152", "307", "309" а во втором столбце принятые по ним решения: "Возбуждено", "Отказано", "Передано".. в этих двух столбцах количество ячеек одинаково, но есть еще и другие столбцы где ячеек намного больше... мне необходимо сделать выборку
к примеру: сколько по "152" "Возбуждено" или сколько по "309" "отказано"
6aHaH4uk вне форума Ответить с цитированием
Старый 09.12.2011, 01:29   #6
6aHaH4uk
 
Регистрация: 31.10.2011
Сообщений: 7
По умолчанию

Реализовал через On Error, но может кто-то знает более оптимальный вариант???

PHP код:
On Error GoTo Errors1
Dim i 
As Integer
Dim НужноеКоличество 
As Integer
Dim ВсегоСтрок 
As Integer
НужноеКоличество 
0
ВсегоСтрок 
ActiveDocument.Tables(1).Rows.Count
For 1 To ВсегоСтрок
If ActiveDocument.Tables(1).Cell(i3).Range.Text Like "СТ.309*" And ActiveDocument.Tables(1).Cell(i4).Range.Text Like "ПОРУШЕНО КРИМІНАЛЬНУ СПРАВУ*" Then
НужноеКоличество 
НужноеКоличество 1
End 
If
Next
Errors1
:
If 
Err.Number 5941 Then
НужноеКоличество 
НужноеКоличество 1
End 
If
Resume Next
Ends
:
MsgBox (НужноеКоличество
6aHaH4uk вне форума Ответить с цитированием
Старый 09.12.2011, 04:53   #7
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от 6aHaH4uk Посмотреть сообщение
...ячейки объединены между собой. В одному столбце ячейки существуют, в других нет...
В таблице с объединенными ячейками, номер столбца ячейки (Cell.ColumnIndex) и столбец в котором она визуально находится, это абсолютно разные вещи. Например, если в строке из 3-х ячеек объединить первые две и разбить последнюю, то их останется три, но...

Если вышесказанное не принципиально, то достаточно проверить существование ячейки с номером Table.Columns.Count в каждой строке, т.е. Table.Cell(n, Table.Columns.Count).

Надо понимать, что ячейки в таблице Word ВСЕГДА нумеруются построчно от 1 до количества ячеек в строке, независимо от объединенных ячеек.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Некорректная работа гиперссылок Microsoft Word 2010. steff44 Microsoft Office Word 14 01.02.2013 06:04
Работа с word текстом и таблицей. cat2899 Общие вопросы Delphi 0 25.09.2011 11:41
работа с таблицей photozaz БД в Delphi 4 27.09.2008 21:29
Работа с таблицей без БД Гр_ БД в Delphi 3 06.06.2007 16:31