Как уменьшить высоту строк таблицы в ворде
Перейти к содержимому

Как уменьшить высоту строк таблицы в ворде

  • автор:

Настройка высоты строк

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

  1. Выделить одну или несколько строк.
  2. Выполнить команду Таблица \ Свойства таблицы.
  3. В диалоговом окне Свойства таблицы перейти на вкладку Строка.
  4. Установить флажок Высота и задать величину высоты строки в сантиметрах.

Для перехода к другим строкам таблицы использовать кнопки Предыдущая строка или Следующая строка.

Примечания.

  • Изменить высоту строки можно на вертикальной линейке форматирования. Для этого курсор установить внутри таблицы, подвести указатель мыши к границе строки на линейке (указатель принимает вид двунаправленной стрелки ); нажать левую кнопку мыши и, не отпуская, переместить указатель, изменяя высоту строки. Если перемещать указатель при нажатой клавише ALT, на линейке будет отображаться высота строки в сантиметрах.
  • Изменить высоту строки таблицы можно передвигая границу строки внутри самой таблицы.
  • Для того чтобы установить одинаковую высоту нескольких строк, выделить эти строки и выполнить команду Таблица \ Автоподбор \ Выровнять высоту строк или нажать кнопку Выровнятьвысоту строк на панели инструментов Таблицы и границы.

Объединение и разбиение ячеек таблицы

Внимание: Лучше всегда объединять несколько ячеек таблицы в одну ячейку, чем разбивать одну ячейку таблицы на несколько ячеек.

Объединение ячеек таблицы в одну ячейку

  1. Выделить объединяемые ячейки.
  2. Выполнить команду Таблица \ Объединить ячейки или нажать кнопку Объединить ячейки на панели инструментов Таблицы и границы.

Примечание. Для объединения нескольких ячеек таблицы в одну ячейку можно нажать кнопку Ластик на панели инструментов Таблицы и границы. Указатель мыши принимает вид «ластика». Для удаления линии разделения ячеек щелкнуть «ластиком» по удаляемой линии.

Выделить ячейки С1 – E1, и объединить их (команда Таблица \ Объединить ячейки).

Разбиение ячейки таблицы на несколько ячеек

  1. Выделить ячейку таблицы, которую разбиваем на несколько ячеек.
  2. Выполнить команду Таблица \ Разбить ячейки.
  3. В диалоговом окне Разбиение ячеек (Рисунок 32) указать число столбцов и число строк.

Рисунок 32 Диалоговое окно Разбиение ячеек

Примечания.

  • Для разбиения ячейки таблицы на несколько ячеек можно нажать кнопку Разбитьячейки на панели инструментов Таблицы и границы, в диалоговом окне Разбиение ячеек указать число столбцов и число строк.
  • Для разбиения ячейки таблицы на несколько ячеек можно нажать кнопку Нарисовать таблицу на панели инструментов Таблицы и границы. Указатель мыши принимает вид «пера», нарисовать им линию разделения ячейки.

Создание повторяющихся заголовков на каждой странице в многостраничных таблицах

Если таблица не помещается на одной странице, то, как правило, на последующих страницах повторяются строки с заголовками столбцов таблицы (первые строки таблицы).

  1. Выделить первую строку/строки таблицы, которые содержат заголовки столбцов.
  2. Выполнить команду Таблица \ Свойства таблицы.
  3. В диалоговом окне Свойства таблицы перейти на вкладку Строка и установить флажок Повторять как заголовок на каждой странице.

Как определить высоту строки таблицы в Word? Помогите, горю.

Всем привет.
Расскажите мне, пожалуйста, кто-нибудь, как определить высоту строки таблицы?
Таблица создается и заполняется автоматически, высота строки задана по умолчанию как wdRowHeightAuto, количество текста, а следовательно и высота строки заранее неизвестны, но при этом нужно отслеживать высоту таблицы и в случае превышения лимита, создавать другую.
Теперь самое интересное: я никак не могу получить реальную высоту строки таблицы, или хотя бы общую высоту таблицы. Если ставлю wdRowHeightAuto, то Height = 99999, если другие, то получаю предустановленное значение, которое не соответствует реальному.
Help! Горю! X)-

5 ответов

29 декабря 2004 года
1.5K / / 19.03.2003

Точно знать реальный размер строки в таблице можно только если ее свойство HeightRule:=wdRowHeightExactly, но при это она соответственно автоматически подстраиваться не будет

При других HeightRule:= получаем то что ты описывал: либо 99999, либо старое значение по умолч.

Народ по разговорам давно с этой бедой мучается, мне как-то не надо было, посмотрю конечно тоже, но врядли можно что-то придумать

. хм, посмотрел еще раз, никак

Вообщем, вижу токо один путь, ставить таблице(строке) HeightRule:=wdRowHeightExactly, а вот AutoFit’ом заняться уже конечно самому, это не так сложно, как может показаться на первый взгляд. у меня уже есть функции по опред. физ. размеров строк заданого шрифта и размера, так что останется токо каждый раз подгонять под изменяющийся текст размеры таблицы

30 декабря 2004 года
67 / / 11.10.2002

Originally posted by SergeySV
Точно знать реальный размер строки в таблице можно только если ее свойство HeightRule:=wdRowHeightExactly, но при это она соответственно автоматически подстраиваться не будет

При других HeightRule:= получаем то что ты описывал: либо 99999, либо старое значение по умолч.

Да мне без разницы каким каком определять, но фиксировать высоту — исключено.
Люди, есть у кого-нибудь готовое решение?

30 декабря 2004 года
1.5K / / 19.03.2003

Originally posted by GDragon

Да мне без разницы каким каком определять, но фиксировать высоту — исключено.
Люди, есть у кого-нибудь готовое решение?

02 января 2005 года
1.5K / / 19.03.2003

Хотя ты знаешь, я тут после нового года подумал 😀
есть один способ, как говорится в лоб, придется конечно покодить, но считать по идеи должен, будет время накалякаю

11 января 2005 года
1.5K / / 19.03.2003

Человек наверное уже сгорел 😛 а я наконец только додумкал как это лучше.
Сначала я написал функцию, которая вычисляла высоту ячейки таблицы анализируя каждую строчку внутри: т.е. в каждой строчке определ. самый высокий символ + междустрочный интервал — суммируя таким образом все строчки в ячейке получалась высота ячейки.
Потом мне подсказали свойство range.Information(wdVerticalPositionRelativeToPage), таким образом мне достаточто было определить положение первой строчки, потом самой нижней+ее междустрочный интервал. Однако легко только все на словах: проблемы начались уже с определением первой/последней строчки — дело в том, что пустые строчки(которые просто с переводом строки) word не воспринимает как нормальные строчки и не добавляет их полноправно в коллекцию range.Sentences и потому range.Sentences.First (а также range.Sentences.Last) начинали безбожно врать, пришлось писать код по анализу и отлову ситуаций, когда первая/последняя строка в ячейке была пустой. Проблемой осталовалось также определением междустрочного интервала, потому что, то что возвращает свойство .LineSpacing никак не подходит для реальных вычислений, а подобрать формулу у меня так и не получилось. Да там помойму и невозможно это сделать, вот, можете запустить этот макрос и полюбоваться на фактические значения междустрочного интервала для разных шрифтов и множителей.

Sub Macros1()
Dim i As Long, k As Long
Dim raz As Single
Dim rTemp As Range
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:= _
1, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
ActiveDocument.Tables(1).Cell(1, 1).Range.Text = «df» & vbCrLf & «df»
For k = 1 To 12
For i = 8 To 22
ActiveDocument.Tables(1).Cell(1, 1).Range.Sentences(1).Font.Size = i
ActiveDocument.Tables(1).Cell(1, 1).Range.Sentences(1).ParagraphFormat.LineSpacing = 6 + 6 * k

Set rTemp = ActiveDocument.Tables(1).Cell(1, 1).Range.Sentences(2)
Set rTemp = ActiveDocument.Range(Start:=rTemp.Start, End:=rTemp.Start + 3)

raz = rTemp.Information(wdVerticalPositionRelativeToPage) _
— ActiveDocument.Tables(1).Cell(1, 1).Range.Sentences(1).Information(wdVerticalPositionRelativeToPage)
raz = raz — i

Debug.Print «Коэф. междустр интерв-» & (k — 1) / 2 + 1 & » Размер шрифта-» & i & » Реальн междустр интервал-» & raz
Next i
Next k
End Sub

Так что если кто разобрался с междустрочными интервалами, пусть пишет сюда. 😛

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

Да, еще такой момент. В одном случае мы можем получить немного завышенное значение высоты — это когда измеряем высоты строки таблицы, которая на этом листе последняя, а следующая уже не умещается и переносится на следующий лист. И тогда соответственно вот на эту величину оставшегося неиспользованного пространства под нашей строкой до конца листа мы и получим ошибку. Пока еще не знаю, как эту величину можно отследить и вычислить, буду думать. но в любом случае такая ситуация должна возникать редко — чтобы большой кусок листа под последней строкой на листе пропадал.

Public Function HeightRow(rRow As Row) As Single
‘ Функция вычисляет высоту выбранной строки таблицы

‘[rRow] — строка таблицы, можно передавать например так — ActiveDocument.Tables(1).Rows(1)

Dim tTable As Table
Dim cCell As Cell
Dim r1 As Range, r2 As Range
Dim lMaxCol As Long, lMaxRow As Long

On Error GoTo Er_

Set tTable = rRow.Parent

‘ проверяем, может нам и не придется вычислять высоту строки самим
For Each cCell In rRow.Cells
If cCell.HeightRule = wdRowHeightExactly Then
HeightRow = cCell.Height
GoTo Ex_
End If
Next

‘ позиция Top
Set r1 = rRow.Range

If rRow.Index < tTable.Rows.Count Then
‘ получ. след. строку таблицы
Set r2 = tTable.Rows(rRow.Index + 1).Range
Else
‘ это послед. строка таблицы
lMaxRow = tTable.Range.Information(wdMaximumNumberOfRows)
lMaxCol = tTable.Range.Information(wdMaximumNumberOfColumns)
‘ переходим на параграф следующ. за таблицей, он станет нашим нижним range
Set r2 = tTable.Cell(lMaxRow, lMaxCol).Range
With r2
.Collapse Direction:=wdCollapseStart
.Move Unit:=wdParagraph, Count:=2
.Select
End With
End If

‘ вычисляем высоту
HeightRow = AbsDistBetwenRanges(r1, r2)

Ex_:
Exit Function

Er_:
HeightRow = 0
Resume Ex_

Public Function HeightTable(tTable As Table) As Single
‘ Функция вычисляет высоту таблицы

‘[tTable] — ссылка на таблицу, можно передавать например так — ActiveDocument.Tables(1)

Dim r1 As Range, r2 As Range
Dim lMaxCol As Long, lMaxRow As Long

On Error GoTo Er_

‘ позиция Top
Set r1 = tTable.Cell(1, 1).Range

‘ позиция Bottom
lMaxRow = tTable.Range.Information(wdMaximumNumberOfRows)
lMaxCol = tTable.Range.Information(wdMaximumNumberOfColumns)
Set r2 = tTable.Cell(lMaxRow, lMaxCol).Range
With r2
.Collapse Direction:=wdCollapseStart
.Move Unit:=wdParagraph, Count:=2
.Select
End With

‘ вычисляем высоту
HeightTable = AbsDistBetwenRanges(r1, r2)

Ex_:
Exit Function

Er_:
HeightTable = 0
Resume Ex_

Public Function AbsDistBetwenRanges(r1 As Range, r2 As Range) As Single
‘ измеряет абсолютное расстояние (в points) между двумя range’ми (их верхними углами),
‘ учитывая тот факт, что range’ы могут находится на разных листах
‘ и у каждого листа может быть свой размер и свои отступы

‘[r1] — первый range
‘[r2] — второй range, между которыми будет измеряться расстояние.

Dim snR1Top As Single, snR2Top As Single
Dim snR1Page As Single, snR2Page As Single
Dim snDistPages As Single
Dim rTemp As Range
Dim i As Long

On Error GoTo Er_

snR1Top = r1.Information(wdVerticalPositionRelativeToPage)
snR2Top = r2.Information(wdVerticalPositionRelativeToPage)
snR1Page = r1.Information(wdActiveEndPageNumber)
snR2Page = r2.Information(wdActiveEndPageNumber)

‘ определяем кто выше
If snR1Page < snR2Page Then
‘ считаем страницы между ними
For i = snR1Page + 1 To snR2Page — 1
Set rTemp = rTemp.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=i)
snDistPages = snDistPages + rTemp.PageSetup.PageHeight _
— rTemp.PageSetup.BottomMargin _
— rTemp.PageSetup.TopMargin
Next i
‘ вычисляем итоговое расстояние
AbsDistBetwenRanges = r1.PageSetup.PageHeight — r1.PageSetup.BottomMargin — snR1Top _
+ snDistPages _
+ snR2Top — r2.PageSetup.TopMargin

ElseIf snR1Page > snR2Page Then
‘ считаем страницы между ними
For i = snR2Page + 1 To snR1Page — 1
Set rTemp = rTemp.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=i)
snDistPages = snDistPages + rTemp.PageSetup.PageHeight _
— rTemp.PageSetup.BottomMargin _
— rTemp.PageSetup.TopMargin
Next i
‘ вычисляем итоговое расстояние
AbsDistBetwenRanges = r2.PageSetup.PageHeight — r2.PageSetup.BottomMargin — snR2Top _
+ snDistPages _
+ snR1Top — r1.PageSetup.TopMargin

Else ‘ на одной странице находятся
AbsDistBetwenRanges = Abs(snR1Top — snR2Top)
End If

Ex_:
Exit Function

Er_:
AbsDistBetwenRanges = 0
Resume Ex_

Как уменьшить высоту строк таблицы в ворде

Добрый день. Есть такая проблема. Программа (Delphi) создает документ Word с таблицей. Нужна высота строк в таблице 0,7 см.
Делаю так
j:=Round(0.7*28.35);
table.Rows.Height:=j;
но требуемая высота в документе больше (как установленный минимум).В сторону увеличения высоты строк код работает. Как отменить в таблице минимум высоты строк и установить параметр в свойство точно?

Пользователь
Регистрация: 11.11.2008
Сообщений: 32

на сколько я знаю минимальная высота строки в таблице зависит от шрифта в ней. Нельзя сделать шрифт 0.5 см а высоту строки 0.3 см.

Пользователь
Регистрация: 26.04.2010
Сообщений: 35

При форматировании таблицы вручную шрифт не менялся, а высота строки была сделана 0,7 см. Вопрос возник при необходимости вывода таблицы под требуемый шаблон: таблица из 33 строк должна располагаться на одной странице+ кое-какая текстовая информация

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение высоты строк djdron Общие вопросы Delphi 2 28.11.2010 10:01
изменение высоты фрейма MiK_on JavaScript, Ajax 2 11.09.2010 21:58
Автоматическое изменение высоты строки Solex Microsoft Office Excel 3 11.02.2010 18:37
Как вычислять значения вне таблицы WORD, с использованием данных из таблицы WORD prikolist Microsoft Office Word 6 21.11.2008 13:17

Как заморозить размер ячеек в таблице в Word

00_lead_image_table_cell_size

Когда вы создаете таблицу в Word, вы можете автоматически изменять размер таблицы в соответствии с ее содержимым. Однако иногда вы можете захотеть зафиксировать размер ячеек в строках и столбцах, чтобы они не изменились. Это легко сделать.

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

00a_moving_mouse_over_table_selection_tool

Нажмите на поле перекрестия, чтобы выбрать всю таблицу, если это необходимо. Щелкните правой кнопкой мыши на поле перекрестия и выберите «Свойства таблицы» во всплывающем меню.

ПРИМЕЧАНИЕ. Если вы не хотите заморозить все ячейки таблицы, выберите строки, столбцы или ячейки, которые вы хотите заморозить, щелкните правой кнопкой мыши выбранные ячейки и выберите «Свойства таблицы» во всплывающем меню.

01_selecting_table_properties

В диалоговом окне «Свойства таблицы» перейдите на вкладку «Строка».

02_clicking_row_tab

Введите желаемый размер для высоты строки (ей) в поле ввода «Указать высоту», а затем выберите «Ровно» в раскрывающемся списке «Высота строки».

03_selecting_exactly

Нажмите на вкладку «Таблица».

04_clicking_table_tab

Нажмите кнопку «Опции».

05_clicking_options_button

В диалоговом окне «Параметры таблицы» в разделе «Параметры» установите флажок «Автоматически изменять размер по размеру содержимого», чтобы в поле не было отметки НЕТ. Нажмите «ОК».

06_turning_off_automatically_resize

Нажмите «ОК» в диалоговом окне «Свойства таблицы», чтобы закрыть его.

07_clicking_ok_on_table_properties_dialog_box

Если вы не отключите опцию «Автоматически изменять размер по размеру содержимого», Word отрегулирует ширину столбцов ваших таблиц, чтобы отображать ваши данные наилучшим образом.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *