Проблема с использованием двух форматов шрифтов в заголовке Word - PullRequest
0 голосов
/ 27 февраля 2019

Из подпрограммы в Excel я пытаюсь создать заголовок в документе Word с двумя словами, каждое из которых имеет разное форматирование шрифта, однако выигрывает последнее форматирование шрифта.Любая помощь будет оценена!Ниже мой текущий фрагмент кода.

With myDoc.Sections(1).Headers(wdHeaderFooterPrimary).Range
    .Font.Name = "Courier New"
    .Font.Size = 10
    .Font.Bold = True
    .Font.Color = wdColorGreen
    .text = "TEXT LINE 1" & vbLf

    .Font.Name = "Calibri Light"
    .Font.Size = 16
    .Font.Bold = False
    .Font.Color = wdColorBlack
    .text = .text & "TEXT LINE 2"
    ....the rest of the code....

ОБНОВЛЕНИЕ: Я решил проблему, явно установив диапазон.См. Фрагмент кода ниже.

With myDoc.Sections(1).Headers(wdHeaderFooterPrimary).Range
    .Start = 0
    .text = "TEXT LINE 1" & vbLf
    .End = Len(.text)
    .Font.Name = "Courier New"
    .Font.Size = 10
    .Font.Bold = True
    .Font.Color = wdColorGreen
    .ParagraphFormat.Alignment = wdAlignParagraphCenter

    .Start = Len(.text) + 1
    .text = "TEXT LINE 2"
    .End = Len(.text) + .Start
    .Font.Name = "Calibri Light"
    .Font.Size = 16
    .Font.Bold = False
    .Font.Color = wdColorBlack

1 Ответ

0 голосов
/ 27 февраля 2019

Это можно сделать немного эффективнее / элегантнее, чем код, размещенный в «обновлении».Полагаться на значения Start и End всегда сложно, так как Word может вставлять «скрытый» контент в поток текста.Чтобы добраться до начала или конца Range, более надежно использовать Collapse.Это также будет быстрее, чем выполнять вычисления со значениями.

Dim rng as Word.Range
Set rng = myDoc.Sections(1).Headers(wdHeaderFooterPrimary).Range
With 
    '.Start = 0 'Not necessary as this will be the default position
    .text = "TEXT LINE 1" & vbLf
    '.End = Len(.text) 'Also not necessary, see further down...
    .Font.Name = "Courier New"
    .Font.Size = 10
    .Font.Bold = True
    .Font.Color = wdColorGreen
    .ParagraphFormat.Alignment = wdAlignParagraphCenter

    .Collapse wdCollapseEnd 'put focus at end of range

    '.Start = Len(.text) + 1 'calculation not necessary as range has been collapsed
    .text = "TEXT LINE 2"
    '.End = Len(.text) + .Start 'not necessary
    .Font.Name = "Calibri Light"
    .Font.Size = 16
    .Font.Bold = False
    .Font.Color = wdColorBlack
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...