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

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Vovik
Сообщения: 18
Зарегистрирован: 05 янв 2005, 14:39
Откуда: Киев

05 янв 2005, 17:07

Добрый день, тут такой вот вопросик: читаю я средствами VBA информацию про таблицы в документе, колонки, строчки, ячейки, и т.д. Но ячейки в таблице могут быть слитыми (получеными в следствии обьединения двух и более других ячеек). Как мне определить, что ячейка слитая и с кем она была слита? Хелп мне пока мало чем помог :( .
С уважением
Дмит
Сообщения: 144
Зарегистрирован: 27 ноя 2004, 22:23
Контактная информация:

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
помогут определить количество столбцов и строк в объединённой ячейке.
Vovik
Сообщения: 18
Зарегистрирован: 05 янв 2005, 14:39
Откуда: Киев

08 янв 2005, 01:06

Спасибо, конечно, за ответ. Только я не понял, чем это может помочь, у меня для каждой ячейки такой запрос возвращает одно и тоже (невзирая на то как и с кем она была слита).
С уважением
Дмит
Сообщения: 144
Зарегистрирован: 27 ноя 2004, 22:23
Контактная информация:

08 янв 2005, 23:00

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

09 янв 2005, 01:09

Спасибо и на этом. Только у меня в офисе 2000 этот код возвращал к-во столбцов и 1 на количество рядков. По-моему, Word вообще эту информацию никак не хранит, так что остается определять ее по другим параметрам :( .
С уважением
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

12 янв 2005, 08:22

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

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

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

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

Вобщем таблицы в W организованы как в HTML...
О! Не забывайте о возможности вкладывать одни таблицы в другие, которая реализовалась с W2K (вместе с вертикальным объединением).
Vovik
Сообщения: 18
Зарегистрирован: 05 янв 2005, 14:39
Откуда: Киев

15 янв 2005, 01:12

Да нет... Не как в ХТМЛ, совсем не так...
В HTML как раз записывается как слита ячейка.
С уважением
Ответить