Я пытаюсь упростить и автоматизировать форматирование из нескольких источников Word - PullRequest
0 голосов
/ 14 января 2020

Я очень начинающий программист (думаю, код-энтузиаст c Engli sh мажор), пытающийся сделать что-то, что, на мой взгляд, должно быть очень простым. Для работы я должен включить материалы из нескольких источников, использующих Word, каждый из которых имеет различные настройки для различных стилей. Таким образом, у Алана заголовок 1 будет, например, 14 пунктов Arial, тогда как заголовок Бет 1 будет составлять 16 пунктов нового курьера, а стандарт для моей организации для заголовка 1 - 18 пунктов Калибри. Различные стили могут быстро накапливаться, и даже если вы измените импортированные материалы, чтобы они соответствовали нужным, в них есть куча материалов, которые могут вызвать проблемы.

Мне бы хотелось создать VBA макрос, который проходит по документу и по существу говорит: «Это тело? Круто, весь текст тела имеет эти настройки. Это заголовок 1? Все заголовки 1 должны быть XYZ», а затем проходит и выполняет эти преобразования. Я получил книгу О'Рейли по написанию макросов для Word, но быстро понял, что у меня над головой. Любые предложения о том, как начать или где искать?

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

ETA Мой код сейчас на этом этапе:

Sub test ()

Set objDo c = ActiveDocument

'Сначала выделите весь документ цветом по умолчанию (т. Е. Цветом, используемым для стилей, которые не определены в нашем руководстве)

objDo c .Range.HighlightColorIndex = wdDarkYellow

'Нужно выяснить, как сделать цветовой код (RGB), пока это работает.

reformatStyle "Heading 1", False, "Calibri ", wdBlack, 16

reformatStyle" Body "

'Вызовите reformatStyle один раз для каждого стиля, задав соответствующие значения для полужирного, fontName, цвета и размера.

' valid цвета: https://docs.microsoft.com/en-us/office/vba/api/word.wdcolorindex

End Sub

Sub reformatStyle (стиль, полужирный, fontName, color, fontSize)

With objDoc.Content.Find

    .ClearFormatting

    .style = style

    ' this first bit selects the blocks that have the specified style
    With .Replacement

        .Font.bold = bold

        .Font.Name = fontName

        .Font.ColorIndex = color

        .Font.Size = fontSize

        .Highlight = False

        ' this modifies the selected blocks. Note that we remove the highlighting at this point, otherwise it would remain at the default color

    End With

    .Execute Wrap:=wdFindContinue, Format:=True, Replace:=wdReplaceAll

End With

End Sub

То, что я хотел бы сделать, - это установить цвет в значения RGB. Есть предложения?

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