Нужна помощь в размещении таблицы в начале страницы - PullRequest
0 голосов
/ 01 июля 2019

Я помещаю таблицы в документ Word.Количество строк в таблице может варьироваться, но высота строк фиксирована, поэтому я знаю максимальное количество строк, которое может поместиться на одной странице.Когда я достигну этого максимального числа, я хочу добавить новую страницу в документ, а затем вставить в него новую таблицу.Звучит просто, но я сталкиваюсь со всевозможными странными результатами.Результат № 1: я попытался использовать и «Selection.InsertNewPage» и «Selection.InsertBreak (wdPageBreak)».Когда я делаю это, добавляются 2 страницы вместо 1.

 NumberOfPages = SectionObject.Range.Information(wdNumberOfPagesInDocument)
 TableLocation = TableObject.Range  'get the range object of the current table
 TableLocation.Collapse(WdCollapseDirection.wdCollapseEnd) 'go to end of table
 TableLocation.Select()
 WordDocument.Application.Selection.InsertBreak(WdBreakType.wdPageBreak) 'adds 2 pages instead of 1
 NumberOfPagesNew = SectionObject.Range.Information(wdNumberOfPagesInDocument)

Чтобы попытаться сделать это, я написал этот код (он не работает)

If NumberOfPagesNew > NumberOfPages + 1 Then
   TableLocation = WordDocument.Range.GoTo(wdGoToPage, wdGoToAbsolute, NumberOfPagesNew) 'go to last page of doc
   TableLocation.Delete() 'delete that page
   TableLocation = WordDocument.Range.GoTo(wdGoToPage, wdGoToAbsolute, NumberOfPagesNew - 1) 'go to new last page
   TableLocation.Collapse(WdCollapseDirection.wdCollapseStart) 'move cursor to start of page
End If

'I add a new table using this code
TableObject = WordDocument.Tables.Add(TableLocation, NumberOfRowsNeeded - 1, 5)

Но вместо этогоразмещения моей таблицы на последней странице, добавляется еще одна страница, и моя таблица помещается на нее.Конечным результатом является страница с таблицей, пустая страница, а затем еще одна страница с таблицей.

Результат № 2: Еще одна вещь, которую я попробовал, - переместить курсор в конец таблицы, добавив строкуперерыв и затем размещение моего стола после этого.Это обошло мою проблему добавления 2 страниц вместо 1. Однако, это добавляет 2 строки на новую страницу вместо 1, что отбрасывает мой код подсчета строк.Ниже приведен код, который я использовал.

TableLocation = TableObject.Range 'get range object of current table
TableLocation.Collapse(wdCollapseEnd) 'go to end of table
TableLocation.Select()
WordDocument.Application.Selection.InsertBreak(wdLineBreak) 'should add 1 line
TableLocation = WordDocument.Application.Selection.GoToNext(wdGoToLine) 
TableLocation.Collapse(WdCollapseDirection.wdCollapseStart)

'I add my next table using this code.
TableObject = WordDocument.Tables.Add(TableLocation, NumberOfRowsNeeded - 1, 5)

Этот код помещает мою таблицу на одну строку ниже, чем следовало бы.

Я мало занимаюсь кодированием Word и очень мало знаю о тонкостях объекта выбора, поэтому я уверен, что именно в этом заключается моя проблема.Если бы кто-то мог показать мне хороший способ выполнить то, что я хочу сделать, я был бы признателен.

Заранее спасибо,

Даррен

1 Ответ

0 голосов
/ 02 июля 2019

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

Selection.EndKey Unit:=wdStory
ActiveDocument.Tables.Add Selection.Range, 5, 5
Selection.EndKey Unit:=wdStory
Selection.InsertBreak WdBreakType.wdPageBreak
Selection.EndKey Unit:=wdStory
ActiveDocument.Tables.Add Selection.Range, 5, 5
' ...

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...