PDA

Просмотр полной версии : Слитые ячейки в Word



Vovik
05.01.2005, 17:07
Добрый день, тут такой вот вопросик: читаю я средствами VBA информацию про таблицы в документе, колонки, строчки, ячейки, и т.д. Но ячейки в таблице могут быть слитыми (получеными в следствии обьединения двух и более других ячеек). Как мне определить, что ячейка слитая и с кем она была слита? Хелп мне пока мало чем помог :(.

Дмит
06.01.2005, 23:54
Выражения:
i = Application.Documents(1).Tables(1).Cell(1, 1).Range.Columns.Count
j = Application.Documents(1).Tables(1).Cell(1, 1).Range.Rows.Count
помогут определить количество столбцов и строк в объединённой ячейке.

Vovik
08.01.2005, 01:06
Спасибо, конечно, за ответ. Только я не понял, чем это может помочь, у меня для каждой ячейки такой запрос возвращает одно и тоже (невзирая на то как и с кем она была слита).

Дмит
08.01.2005, 23:00
Поискал ещё ответ и пришёл к одному: вопрос довольно непростой!
В старых версиях вообще нельзя было объединять ячейки по вертикали,
по этому этот код наверное не работает.
Точнее работает определение только количество ячеек по вертикали (j = Application.Documents(1).Tables(1).Cell(1, 1).Range.Rows.Count),
а количество по горизонтали - выдаёт столбцов в таблице.
Все эти проблемы наталкивают на одно лобовое решение: скопировать сложную таблицу в Excel и там подсчитать объединённые ячейки.

Vovik
09.01.2005, 01:09
Спасибо и на этом. Только у меня в офисе 2000 этот код возвращал к-во столбцов и 1 на количество рядков. По-моему, Word вообще эту информацию никак не хранит, так что остается определять ее по другим параметрам :(.

Naeel Maqsudov
12.01.2005, 08:22
По-моему, Word вообще эту информацию никак не хранит, так что остается определять ее по другим параметрам

Ноги у проблемы растут вот откуда:
1)
При объединении ячеек по горизонтали Word (в отличие от Excel) действительно не производит объединение ячеек, а просто расширяет первую на ширину выделенных, собирает в нее все их содержимое выделенных и удаляет их (кроме первой). В результате ВСЕГДА строка - это линейный набор ячеек.

Соответственно если Таблица.Columns.Count = N, а Строка.Columns.Count < N - следовательно тут есть объединенные ячейки (возможно). :)

2)
При объединении по вертикали ячейка опять-таки (как в HTML) ни с чем не объединена, а имеет другую высоту. Одна или несколько следующих строк таблицы при этом как бы терпят разрыв.

Тут сложнее. По идее правый край одной ячейки должен быть существенно левее левого края следующей ячейки :)
см св-ва .Left и .Right. Однако это только прелположение - требуется проверка.

Вобщем таблицы в W организованы как в HTML...
О! Не забывайте о возможности вкладывать одни таблицы в другие, которая реализовалась с W2K (вместе с вертикальным объединением).

Vovik
15.01.2005, 01:12
Да нет... Не как в ХТМЛ, совсем не так...
В HTML как раз записывается как слита ячейка.