1

Тема: Горизонтальная таблица на двух листах

Вот, встретил такое интересное чудо. (см. файл)
Вроде обычная таблица, но располагается на !двух! страницах.
При этом, tbl.columns.count говорит, что здесь всего 3 колонки.
И чтобы ее заполнять макросом приходится изголяться вот таким образом: (обратите внимание на адресацию)

                tbl.Cell(i + 1, 1).Range.Text = CStr(i)             ' Порядковый номер
                tbl.Cell(i + 1, 2).Range.Text = vaStudents(i, 27)   ' ФИО
                tbl.Cell(i + 1 + 38, 1).Range.Text = vaStudents(i, 28) ' Дата рождения
                tbl.Cell(i + 1 + 38, 2).Range.Text = vaStudents(i, 29) ' Адрес

Обратите внимание - когда я хочу обратиться допустим, к 4 столбцу, я должен сделать смещение по строкам(+38), и писать во второй(?!?!) столбец.

Скажите пожалуйста, что это за таблица такая, почему она так располагается и как можно это повторить ( у меня не получилось создать таблу на 2 листа)

2

Re: Горизонтальная таблица на двух листах

Простите, файл не прикрепился

Post's attachments

ЧудоТаблица.docx 15.47 Кб, 3 скачиваний с 2016-08-26 

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

3

Re: Горизонтальная таблица на двух листах

PATRI0T, чудес не бывает. В этом вы сможете легко убедиться сами, как только измените масштаб отображения документа на 100% или "по ширине страницы".
Можете также посмотреть, что получится, если удалить десяток строк на первой странице, или выделить первую строку таблицы и задать для нее "Повторять как заголовок...".
Увидеть вашу "Чудо таблицу" на бумаге можно только если при отправке документа на принтер включить режим "Две страницы на листе"
Помочь разобраться со структурой сложных таблиц (с объединенными, разбитыми удаленными ячейками) может  макрос, который вставляет в каждую ячейку номера строк и столбцов

Sub Cells_RowIndex_ColumnIndex()
'Вставка номеров строк и столбцов в ячейки таблицы
    Dim oCell As Cell
    Dim oTable As Table
    If Not Selection.Information(wdWithInTable) Then
        MsgBox "Выделение вне таблицы"
        Exit Sub
    End If
    Set oTable = Selection.Tables(1)
    With oTable.Range
        For Each oCell In .Cells
            oCell.Range.InsertAfter "R" & oCell.RowIndex & ",C" & oCell.ColumnIndex
        Next
    End With
End Sub