1

Тема: Копирование стилей

Добрый день.
Имеется следующая задача: необходимо средствами VBA скопировать системные стили из шаблона в документ. В шаблоне стили оглавления называются “TOC 1" и "TOC 2"
Рабочий код в англоязычной версии:

ActiveDoc = ActiveDocument.Name
MacroDoc = test.docm
Application.OrganizerCopy Source:=MacroDoc, Destination:=ActiveDoc, Name:="TOC 1", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:=MacroDoc, Destination:=ActiveDoc, Name:="TOC 2", Object:=wdOrganizerObjectStyles

В русскоязычной версии код вываливается в ошибку в силу того, что название системных стилей в файле получателя соответственно «Оглавление 1, Оглавление 2».   
Пробовал через системное название стилей где: (Оглавление 1) =  (TOC 1) = (-20) = (wdStyleTOC1) но тип переменной name – string. Вариант не проходит.
Собственно, задача сводится к тому, как с копировать системные стили в разных языковых версиях или как скопировать настройки стиля с другого файла не открывая его.

"Ты не умничай, ты пальцем покажи"
"Кто поработал с многоуровневым списком в Ворде, тот в цирке не смеется"

2

Re: Копирование стилей

Может кому пригодится, как обычно все проще простого...

 Select Case Application.Language
  
  Case 1033
   LocalStyleNameT1 = "TOC 1"
   LocalStyleNameT2 = "TOC 2"
   
 Case 1049
    LocalStyleNameT1 = "Заголовок 1"
    LocalStyleNameT2 = "Заголовок 2"
  End Select
 
  Application.OrganizerCopy Source:=MacroDoc, Destination:=ActiveDoc, Name:=LocalStyleNameT1, Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:=MacroDoc, Destination:=ActiveDoc, Name:=LocalStyleNameT2, Object:=wdOrganizerObjectStyles
"Ты не умничай, ты пальцем покажи"
"Кто поработал с многоуровневым списком в Ворде, тот в цирке не смеется"

3

Re: Копирование стилей

AlexStar пишет:

Собственно, задача сводится к тому, как с копировать системные стили в разных языковых версиях или как скопировать настройки стиля с другого файла не открывая его.

Скопировать настройки стили файла, не открывая его, видимо, не получится.
А чтобы копировать в разных языковых настройках, используйте системные имена.
Напр., для имени файла:

MacroDoc.Styles(wdStyleTOC1).Namelocal  

Если вы копируете из прицепленного стилевого шаблона, то бывает полезно его сначала открыть как файл:

Set macroDoc = ActiveDocument.AttachedTemplate.OpenAsDocument

4

Re: Копирование стилей

Для того, чтобы скопировать системные стили (на примере стилей оглавления) из другого документа или шаблона в различных языковых версиях, полагаю, данная конструкция вполне уместная:

Dim LocalStyleNameT1 as String
Dim LocalStyleNameT2 as String

LocalStyleNameT1 = ActiveDocument.Styles(wdStyleTOC1).NameLocal
LocalStyleNameT2 = ActiveDocument.Styles(wdStyleTOC2).NameLocal
Application.OrganizerCopy Source:=MacroDoc, Destination:=ActiveDoc, Name:=LocalStyleNameT1, Object:=wdOrganizerObjectStyles
Application.OrganizerCopy Source:=MacroDoc, Destination:=ActiveDoc, Name:=LocalStyleNameT2, Object:=wdOrganizerObjectStyle
"Ты не умничай, ты пальцем покажи"
"Кто поработал с многоуровневым списком в Ворде, тот в цирке не смеется"