Я очень начинающий программист (думаю, код-энтузиаст 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. Есть предложения?