Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Работа с таблицами с помощью Visual Basic в Word / 11 сообщений из 11, страница 1 из 1
06.12.2010, 13:32
    #36997069
Ankh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с таблицами с помощью Visual Basic в Word
Генератор отчёта генерирует мне таблицу. Таблица выходит глючная, иногда у неё внизу страницы у ячеет нет нижней границы.

Таблица может простираться на много много страниц.

Как мне, с помощью VBA на каждой странице найти верхнюю и нижнюю строку и у верхней проставить верхнюю границу, а у нижней - нижнюю.
...
Рейтинг: 0 / 0
06.12.2010, 17:36
    #36997811
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с таблицами с помощью Visual Basic в Word
AnkhГенератор отчёта генерирует мне таблицу. Таблица выходит глючная, иногда у неё внизу страницы у ячеет нет нижней границы.

Таблица может простираться на много много страниц.

Как мне, с помощью VBA на каждой странице найти верхнюю и нижнюю строку и у верхней проставить верхнюю границу, а у нижней - нижнюю.

ворд устойчиво берет таблицу около 25-30 листов, при большом количестве столбцов -меньше

верхней и нижней линии нет, тат как не установлена опция не разрывать ячейку

для больших отчетов делала HTM для открытия в WORD в режиме <pre>....</pre> с форматированием строки пробелами, макросом вставляя в верхний коллонтитул строку типа
1-----2----------3-----------4--------------5----------------6
...
Рейтинг: 0 / 0
07.12.2010, 08:20
    #36998487
Ankh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с таблицами с помощью Visual Basic в Word
ПЕНСИОНЕРКАAnkhГенератор отчёта генерирует мне таблицу. Таблица выходит глючная, иногда у неё внизу страницы у ячеет нет нижней границы.

Таблица может простираться на много много страниц.

Как мне, с помощью VBA на каждой странице найти верхнюю и нижнюю строку и у верхней проставить верхнюю границу, а у нижней - нижнюю.

ворд устойчиво берет таблицу около 25-30 листов, при большом количестве столбцов -меньше

верхней и нижней линии нет, тат как не установлена опция не разрывать ячейку

для больших отчетов делала HTM для открытия в WORD в режиме <pre>....</pre> с форматированием строки пробелами, макросом вставляя в верхний коллонтитул строку типа
1-----2----------3-----------4--------------5----------------6

Дело в том, что не я делаю отчёт, а мне его выплевывает Report Sharp Shooter.

Он уже мне делает разрывы.
...
Рейтинг: 0 / 0
07.12.2010, 08:25
    #36998492
Ankh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с таблицами с помощью Visual Basic в Word
Я переписывался с компанией, которая делает генератор отчетов.

Мой вопрос и моя проблема в прикрепленном файле. Средствами генератора отчетов я не смог решить эту проблему. Поэтому пробую средствами Office и VBA.
...
Рейтинг: 0 / 0
07.12.2010, 08:26
    #36998493
Ankh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с таблицами с помощью Visual Basic в Word
Форум не позволяет прикреплять сообщения размером более 150 кб потому вторая часть
...
Рейтинг: 0 / 0
07.12.2010, 09:34
    #36998551
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с таблицами с помощью Visual Basic в Word
Ankh,

я посмотрела ваш документ и уверена, что причина

верхней и нижней линии нет, тат как не установлена опция не разрывать ячейку

-установить ее вы не сможете
-в одном пункте слишком много подпунктов( в п13 -7 подпунктов)

хотя попробуйте в ворде
-выделить таблицу
-зайти в свойства таблицы
-строка
-не разрешать перенос строк на следующую страницу

вдруг и получится
...
Рейтинг: 0 / 0
07.12.2010, 09:45
    #36998571
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с таблицами с помощью Visual Basic в Word
Ankh,

вторая причина
-слишком маленькие поля страницы( у каждого принтета есть минимально возможные поля)
-для проверки : в параметрах установит флажок -показывать границы текста-
-если таблица выходит за линии текста -то могут быть проблемы при печати, ворд ругается на эту ситуацию, но не всегда
-у меня была ситуация, когда я не могла сделать нижнее поле менее 1 см
...
Рейтинг: 0 / 0
07.12.2010, 22:11
    #37000712
Ankh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с таблицами с помощью Visual Basic в Word
ПЕНСИОНЕРКА,

Дело в том что в отчёте это две разные ячейки с прозрачной границей между ними.

Т.е. в конце страницы - первая ячейка, а в начале следующей - вторая. Так что это абсолютно нормально ему их переносить, то есть не связано со свойством "не разрешать перенос строк на следующую страницу".

Мне интересно, можно ли, например макросами, найти последнюю строку таблицы на странице, выделить её ячейки и проставить нижнюю границу? И так для каждой страницы.
...
Рейтинг: 0 / 0
08.12.2010, 09:12
    #37001127
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с таблицами с помощью Visual Basic в Word
Ankh,

разобралась с внутренними границами таблицы

-никогда не использовала(или границы или нет границы)
-все горизонтальные -не проблема
-ваша идея -макросом или иным образом первую и последнюю горизонтальную на странице

пока идей нет
...
Рейтинг: 0 / 0
08.12.2010, 10:14
    #37001241
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с таблицами с помощью Visual Basic в Word
Ankh,

модулем получилось так
при необходимости можно привязать на autoopen\autoexec, хотя сама никогда не использовала autoopen\autoexec

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub m101208_0912()
Dim rs As Row, j1, j2, j3, j3a
Dim tbl As Table
Set tbl = Word.ActiveDocument.Tables( 1 )
j1 =  0 
j2 = tbl.Rows( 1 ).Borders(wdBorderTop).LineStyle
j3a = - 1 
For Each rs In tbl.Rows
j1 = j1 +  1 
rs.Cells( 1 ).Select
j3 = Selection.Information(wdVerticalPositionRelativeToPage)
Debug.Print j1, j3, j3a, Selection.Range.Text;
If j3 < j3a Then
tbl.Rows(j1 -  1 ).Borders(wdBorderBottom).LineStyle = j2
tbl.Rows(j1).Borders(wdBorderTop).LineStyle = j2
End If
j3a = j3
Next rs
End Sub

...
Рейтинг: 0 / 0
08.12.2010, 20:10
    #37003134
Ankh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с таблицами с помощью Visual Basic в Word
ПЕНСИОНЕРКА,

Спасибо, я попробую.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Работа с таблицами с помощью Visual Basic в Word / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]