1

Тема: (Решено) Вертикальное центрирование таблицы

Здравствуйте, можете ли вы мне подсказать про то как отцентрировать таблицы в документе по вертикали. Есть документ в котором довольно много таблиц, по одной на странице, все одного формата, т.е. 2 столбца, 7 строк. Нужно что бы они были по центру страницы.

хм..И тогда сразу второй вопрос, документ с одной большой таблицей, реально ли сделать что бы на странице было по 7 строк таблицы а, их содержимое форматировалось по центру? или что бы автоматически разбивалась таблица на таблицы по 7 строк? а после центровалась как в первом вопросе?

2

Re: (Решено) Вертикальное центрирование таблицы

Я вижу такой вариант (если все таблицы абсолютно одинаковые) - расчитать высоту таблицы складываем высот строк таблицы, а потом в параметрах страницы выставить отступ сверху равный половине разницы между высотой страницы и высотой таблицы. Но этот вариант будет работать, если кроме таблиц ничего на странице нет.
Затем у каждой строки кратной восьми выставляйте у абзаца флаг "Начать с новой страницы". Вот такой вот простой алгоритм..

3

Re: (Решено) Вертикальное центрирование таблицы

andrkar пишет:

Я вижу такой вариант (если все таблицы абсолютно одинаковые) - расчитать высоту таблицы складываем высот строк таблицы, а потом в параметрах страницы выставить отступ сверху равный половине разницы между высотой страницы и высотой таблицы. Но этот вариант будет работать, если кроме таблиц ничего на странице нет.
Затем у каждой строки кратной восьми выставляйте у абзаца флаг "Начать с новой страницы". Вот такой вот простой алгоритм..

А вы можете написать макрос? Я к сожалению не могу сам...

4

Re: (Решено) Вертикальное центрирование таблицы

Еще можно использовать инструменты Word, в которых возможно вертикальное центрирование.
Например, поместить таблицу  в таблицу. Т.е.  создаем таблицу с одной ячейкой по размеру страницы, в ячейке задаем выравнивание по вертикали и помещаем в нее свою таблицу, текст, да что угодно…

Макросы под заказ и готовый пакет - mtdmacro.ru

5

Re: (Решено) Вертикальное центрирование таблицы

Значит средствами макросов нереально сделать что бы таблица автоматически разбивалась на таблички по 8 строк? и что бы шла проверка о наличии на странице только одной таблицы?
Потому что вариант о таблице в таблице к сожалению не подойдет...

6

Re: (Решено) Вертикальное центрирование таблицы

vangor пишет:

...вариант о таблице в таблице к сожалению не подойдет...

Почему не подойдет? Ведь, как вы пишите, таблицу надо разбить на части.

Тогда, еще один довольно удобный вариант – это использовать связанные надписи. Т.е. помещаем на каждой странице надпись, связываем надписи между собой и вставляем в первую надпись таблицу. Что удобно: надписи могут быть любой высоты (под любое число строк таблицы) и могут размещаться в любом месте страницы (по центру, например). Кроме того,  не нарушается целостность таблицы, что удобно для редактирования.

Макросы под заказ и готовый пакет - mtdmacro.ru

7

Re: (Решено) Вертикальное центрирование таблицы

Только что выключил дурака. Вот мы намудрили big_smile
А достаточно просто ВЫСТАВИТЬ ВЕРХНЕЕ И НИЖНЕЕ ПОЛЯ СТРАНИЦЫ ПОБОЛЬШЕ, чтобы таблица была по центру и нужной высоты

Макросы под заказ и готовый пакет - mtdmacro.ru

8

Re: (Решено) Вертикальное центрирование таблицы

Вождь - примерно про то же  самое я говорил выше:)
vangor - так 8 или семь строк? или восьмая - заголовок?

9

Re: (Решено) Вертикальное центрирование таблицы

andrkar пишет:

Вождь - примерно про то же  самое я говорил выше:)
vangor - так 8 или семь строк? или восьмая - заголовок?

да да по 7) извините за дезу)

10

Re: (Решено) Вертикальное центрирование таблицы

Да, и еще для информации - критично ли для вас, если выставить высоту всех строк равной какому-то число, например - 1 см? или в строках таблицы может быть по нескольку строк текста?? Просто это нужно для расчета высоты таблицы..

11

Re: (Решено) Вертикальное центрирование таблицы

Структура таблицы такая - 1 строка- заголовок 1 страницы, 2 стока заголовок для 3 строки, 3 строка обе ячейки, два рисунка в каждой. 4 строка такая же как вторая и т.д.

12

Re: (Решено) Вертикальное центрирование таблицы

Можете сюда выложить пример? код я уже написал, осталось его мне вашу ситуацию приспособить:)

13

Re: (Решено) Вертикальное центрирование таблицы

А может это сделать не таблицами, а надписями?

Лучше день потерять — потом за пять минут долететь!

14

Re: (Решено) Вертикальное центрирование таблицы

вот, пока было время, наваял такой код:

Sub tabl_7()
On Error Resume Next
Dim i As Integer
Dim j As Integer
Dim RowsCount As Integer
Dim TablesCount As Integer
Dim tableFHeight As Single
Dim RowHeight As Single
Dim PageHeight As Single
Dim PageTopMargin As Single
Dim PageBottomMargin As Single
Dim TH As Single
RowsCount = ActiveDocument.Tables(1).Rows.Count
TablesCount = RowsCount / 7
For i = 1 To TablesCount
Selection.GoTo What:=wdGoToTable, Which:=wdGoToFirst, Count:=i, name:=""
ActiveDocument.Tables(i).Split (8)
Selection.ParagraphFormat.PageBreakBefore = True
Next i
' Selection.GoTo What:=wdGoToTable, Which:=wdGoToFirst, Count:=1, name:=""
' Selection.Tables(1).Select
' Selection.Rows.HeightRule = wdRowHeightAtLeast
' Selection.Rows.Height = CentimetersToPoints(0.5)
' Selection.GoTo What:=wdGoToTable, Which:=wdGoToFirst, Count:=i, name:=""
' TH = 0
' For j = 1 To 7
' TH = Selection.Rows.Height + TH
' Selection.MoveDown Unit:=wdLine, Count:=1
' Next j
' With ActiveDocument.Sections(1).PageSetup ' Задание параметров страницы по требованиям ГОСТ 2.105
'       PageHeight = .PageHeight
'       PageTopMargin = (PageHeight - TH) / 2
'        .TopMargin = PageTopMargin ' Отступ от верхнего края страницы
' End With
End Sub

Незакоментированный код берет первую большую, состоящую из большого количества строк таблицу, разбивает ее на таблицы по семь строчек и каждую таблицу начинает на новой странице.
Закоментированный код берет первую из полученных таблиц, вычисляет ее высоту (вот тут что-то я не смог до конца разобраться с тем, как получить правильную высоту строки), и рассчитывает для параметра текущего раздела оступ сверху (он получается слишком большой). Специально его закоментировал, чтобы только разбивка на таблицы была. Отступ сверху можно сделать и вручную из параметров страницы, выбирая для себя желаемое расположение таблицы, которое можно посмотреть на предварительном просмотре.

15

Re: (Решено) Вертикальное центрирование таблицы

Вот оригинал таблицы, из нее нужно сделать по табличке на каждой странице, с 6 рисунками, 6 подписями к ним, и заголовком таблицы.
Спасибо за макрос и помощь) он работает но из за моей ошибки выводит неверной результат) он учитывает заголовок таблицы, а в исходных данных его нет, моя вина признаю) Нужно в него я думаю добавить вставку строки перед первой строкой, и после каждой 6.

Отредактировано vangor (12.04.2010 19:30:58)

Post's attachments

1-кадет.doc 1.9 Мб, 13 скачиваний с 2010-04-12 

You don't have the permssions to download the attachments of this post.

16

Re: (Решено) Вертикальное центрирование таблицы

viter.alex пишет:

А может это сделать не таблицами, а надписями?

Это как?)

17

Re: (Решено) Вертикальное центрирование таблицы

Файл увидел, но не понял, что является заголовком таблицы, а что подписью к рисунку? вроде трехзначные цифры везде. Как из различить??? Постарайтесь до утра ответить, чтобы к вечеру уже было решение.. Смогу доделать на работе, но сюда только вечером выложить..
Да, и еще  - что за формат бумаги вы используете?? На вашем формате бумаги вроде и так все умещается, как вам нужно.. Все же постарайтесь поподробнее и повнятнее сформулировать, что вам нужно, уже исходя из того, что пример файла у меня уже есть.

18

Re: (Решено) Вертикальное центрирование таблицы

andrkar пишет:

Файл увидел, но не понял, что является заголовком таблицы, а что подписью к рисунку? вроде трехзначные цифры везде. Как из различить??? Постарайтесь до утра ответить, чтобы к вечеру уже было решение.. Смогу доделать на работе, но сюда только вечером выложить..
Да, и еще  - что за формат бумаги вы используете?? На вашем формате бумаги вроде и так все умещается, как вам нужно.. Все же постарайтесь поподробнее и повнятнее сформулировать, что вам нужно, уже исходя из того, что пример файла у меня уже есть.

Формат стандартный А4, просто нужно что бы рисунки были поменьше, трехзначные подписи будут меняться на цифры от 1 до 6 на каждой странице, А заголовка таблице в сходнике нет, его придется добавлять вручную в каждую таблицу)

Извините до утра ответить не успел...

Отредактировано vangor (13.04.2010 17:02:32)

19

Re: (Решено) Вертикальное центрирование таблицы

Sub A4Page_ResizeImage_7RowTable_CenterPage()
On Error Resume Next
Dim i As Integer
Dim j As Integer
Dim RowsCount As Integer
Dim TablesCount As Integer
Dim TableHeight As Single
Dim RowHeight As Single
Dim RowImageHeight As Single
Dim PageHeight As Single
Dim PageTopMargin As Single
    With ActiveDocument.PageSetup
        .PageWidth = CentimetersToPoints(21)
        .PageHeight = CentimetersToPoints(29.7)
    End With
  Dim oShpInl As InlineShape
    For Each oShpInl In ActiveDocument.InlineShapes
        oShpInl.Select
        oShpInl.Height = 162.45
        oShpInl.Width = 162.45
        RowImageHeight = oShpInl.Height
    Next
RowsCount = ActiveDocument.Tables(1).Rows.Count
TablesCount = RowsCount / 7
TablesCount = (RowsCount + TablesCount) / 7
For i = 1 To TablesCount
    Selection.GoTo What:=wdGoToTable, Which:=wdGoToFirst, Count:=i, name:=""
    Selection.InsertRowsAbove 1
    Selection.Cells.Merge
    ActiveDocument.Tables(i).Split (8)
    Selection.ParagraphFormat.PageBreakBefore = True
Next i
    RowHeight = 12
    TableHeight = 4 * RowHeight + 3 * RowImageHeight
 With ActiveDocument.Sections(1).PageSetup ' Задание параметров страницы по требованиям ГОСТ 2.105
       PageHeight = .PageHeight
       PageTopMargin = (PageHeight - TableHeight) / 2
        .TopMargin = PageTopMargin ' Отступ от верхнего края страницы
 End With
End Sub

Вот макрос, который делает все, что вы просили с приложенным файлом. Для изменения размера изображений просто поменяйте цифры в строках (приведенные цифры соответствуют 60% от реального размера рисунков, которые в приложенном файле):

        oShpInl.Height = 162.45
        oShpInl.Width = 162.45

исходя из того, что тут привено в point, а 1 см = 28,35 point

Пользуйтесь на здоровье! smile Если что, вопросы по этой же теме задавайте сюда же..

Отредактировано andrkar (13.04.2010 19:58:24)

20

Re: (Решено) Вертикальное центрирование таблицы

Огромное Спасибо!) Вы мне очень сильно помогли!)

21

Re: (Решено) Вертикальное центрирование таблицы

То есть все работает, как надо?

22

Re: (Решено) Вертикальное центрирование таблицы

andrkar пишет:

То есть все работает, как надо?

да) пришлось немножко дополнить как смог) но это потому что по ходу работы оказалось что нужно кое что еще поменять) а так работает прекрасно) Больше спасибо) вы сэкономили мне уйму времени!)

23

Re: (Решено) Вертикальное центрирование таблицы

Обращайтесь еще! smile

24

Re: (Решено) Вертикальное центрирование таблицы

vangor
Меня заинтересовала Ваша шахматная тематика. Какой программой Вы делаете диаграммы?

25

Re: (Решено) Вертикальное центрирование таблицы

benoni пишет:

vangor
Меня заинтересовала Ваша шахматная тематика. Какой программой Вы делаете диаграммы?

Простите был на маевке) Делал не я, мне лишь дали на обработку, могу узнать в эту среду и сообщить здесь если вам еще интересно)

26

Re: (Решено) Вертикальное центрирование таблицы

могу узнать в эту среду и сообщить здесь если вам еще интересно

Да, пожалуйста.

27

Re: (Решено) Вертикальное центрирование таблицы

benoni пишет:

могу узнать в эту среду и сообщить здесь если вам еще интересно

Да, пожалуйста.

Программа написана в нашем уиниверситете специально для вывода подобных диаграмм) т.к. преподавателя не устроил программы типпа fritz)

28

Re: (Решено) Вертикальное центрирование таблицы

andrkar
У меня ситуация аналогичная vangor На страницу А4 надо равномерно разместить восемь графиков с номером каждого сверху (а не слева, как у меня в приложении).
Т.е. вместо  диаграмм vangor- мои графики. Как разбить лист на равные части для каждого рисунка?
внешняя ссылка

29

Re: (Решено) Вертикальное центрирование таблицы

Вот ваш файл переделанный в таблицу. Думаю, по подобию сможете добавить и другие графики. Макроса тут писать, как я понимаю, не нужно..

Отредактировано andrkar (13.05.2010 18:28:53)

Post's attachments

Завдання 5.docx 28.14 Кб, 8 скачиваний с 2010-05-13 

You don't have the permssions to download the attachments of this post.

30

Re: (Решено) Вертикальное центрирование таблицы

andrkar, Спасибо! Оказывается, всё так просто. Но к этой простоте такой тернистый путь!

31

Re: (Решено) Вертикальное центрирование таблицы

Вопрос, может, немного не по теме, но не нашёл темы более подходящей (тема "Форматирование таблиц" закрыта для редактирования).

В прилагаемом файле есть таблица с двумя строками. Невооружённым глазом видно, что текст в первой и второй строках таблицы горизонтально (относительно некоей вертикальной линии) выровнен по-разному. Кликая попеременно на верхнюю и нижнюю строку видно, как немного двигается линейка (визуальный инструмент MS Word), демонстрируя тем самым, что настройки строк различаются.

Вопрос: какие именно параметры (настройки) строк отличаются? Что нужно поменять в настройках нижней строки таблицы, чтобы выравнивание её было одинаковым с верхней строкой?

Понимаю, что это как-то очень просто, но упорно не получается разобраться. Пробовал смотреть и сравнивать настройки ячеек, таблиц, столбцов, абзацы (отступы, табуляцию и проч.), параметры страницы, копировать из верхней в нижнюю формат и прочее -- уже не упомню что именно. Результаты сравнения -- всё идентично.

Можно, конечно, после первой строки добавить пустую строку, скопировать в неё содержимое из последней строки и удалить последнюю. Но это, очевидно, "слабое" решение проблемы, хотя и доступное, но только для этого конкретного случая. А если этих строк много и отличается друг от друга добрая половина таблицы? Хочется понять, какой именно параметр отличается у этих строк.

Признаться, этот вопрос ненавязчиво меня мучает уже несколько лет. Периодически возвращаюсь к его решению, но мои изыскания результатов не приносят. Может кто-нибудь знает ответ?

Post's attachments

анкета.doc 30 Кб, 3 скачиваний с 2010-05-25 

You don't have the permssions to download the attachments of this post.

32

Re: (Решено) Вертикальное центрирование таблицы

Не знаю, как у вас так получилось, но левая и правая граница ячейки имели пустое значение. Не ноль, а именно пустое. Достаточно поставить туда конкретное значение и всё встанет на свои места. Чтобы задать значения этих границ, зайдите в свойства таблицы, кнопка "Параметры"

Лучше день потерять — потом за пять минут долететь!

33

Re: (Решено) Вертикальное центрирование таблицы

Получилось, но не с первого раза, и поэтому не получалось ранее.
Дело в том, что при проставлении в пустые значения циферки "нуль" -- ничего не менялось. Лишь проставление цифры отличной от нуля (например, "0,05" --  удалось!).
Супер! Огромное спасибо!
Я дольше вопрос писал, чем Вы отвечали smile.