Страница 1 из 1

Слитые ячейки в Word

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

Добавлено: 06 янв 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
помогут определить количество столбцов и строк в объединённой ячейке.

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

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

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

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

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

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

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

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

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