Как уменьшить заголовок в одну строку в MS Word с помощью VBA

Я создаю документы с помощью VBA в Word, данные извлекаются из Excel. К сожалению, заголовки иногда бывают такими длинными, что в Word они заворачиваются.

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

В поисках решения этой проблемы я наткнулся на .ComputeStatistics(wdStatisticLines).

К сожалению, когда я запускаю этот код, он продолжает говорить мне, что в моем тексте 0 строк. Как мне заставить код выдавать правильное количество строк?

Вот мой код (только соответствующий раздел):

'Set document title
Dim sLength As Integer
Dim rStatTitle As Range
Set rStatTitle = wkb.Worksheets("Daten2").Range("nfStatTitle") 'Fund Title

With tblTitle.cell(2, 1)
    .Range.Text = rStatTitle.Cells(1, 1)
    Do Until .Range.ComputeStatistics(wdStatisticLines) <= 1
        sLength = Len(rStatTitle.Cells(1, 1))
        .Range.Font.Size = .Range.Font.Size - 1
    Loop
End With

К вашему сведению: tblTitle — это таблица слов, и она объявлена ​​как таковая дальше в коде.


person rohrl77    schedule 08.06.2015    source источник
comment
@EmmadKareem Я не уверен, что понимаю, что вы имеете в виду под тем, откуда пришло сообщение? Я могу опубликовать полное объявление tblTitle, если хотите... фиксированный шрифт в этом случае не подойдет. Заголовок должен иметь размер шрифта 44, если он не подходит, и в этом случае он может быть меньше.   -  person rohrl77    schedule 08.06.2015


Ответы (1)


Этот страница говорит, что вы должны уменьшить Range, чтобы исключить маркер конца ячейки.

Dim newRange As Range
With tblTitle.cell(2, 1)
    .Range.Text = rStatTitle.Cells(1, 1)
    Set newRange = .Range
    newRange.End = newRange.End -1
    Do Until newRange.ComputeStatistics(wdStatisticLines) <= 1
person ChipsLetten    schedule 08.06.2015
comment
Ваш ответ сработал ... по крайней мере, в качестве первого шага! Теперь я получаю результат 1, когда он должен быть 2. Любая идея, почему это могло произойти? Спасибо уже за помощь! - person rohrl77; 08.06.2015
comment
Извини, я виноват. Он дает правильный ответ! Большое спасибо! - person rohrl77; 08.06.2015