Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2013, 11:56   #1
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию Как создать стиль в программе "Word" средствами VBA?

Проблема

При создании стиля таким способом:
Код:
ActiveDocument.Styles.Add Name:=, Type:=
создаётся стиль на основе стиля, где находится текстовый курсор. Т.е. если, например, курсор находится в тексте со стилем "Заголовок 1", то созданный стиль будем иметь такое же оформление, как и стиль "Заголовок 1". Таким способом стиль удобно создавать в самой программе "Word", когда нужно создать стиль на основе выделенного текста. Но для VBA такой способ никак не подходит.


Вопрос

Вот как создать стиль на основе стиля "Обычный"? Только переместив курсор в текст, который имеет стиль "Обычный"?

Последний раз редактировалось Скрипт; 11.03.2013 в 12:02.
Скрипт вне форума Ответить с цитированием
Старый 11.03.2013, 12:57   #2
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

ЗАПИСАТЬ МАКРОРЕКОВДЕРОМ ЗАГОТОВКУ И ПОЧИСТИТЬ
Код:
Sub WW91SCRIPT()

 
 WordBasic.FormatStyle Name:="Стиль1", NewName:="", BasedOn:="", NextStyle _
  :="", Type:=0, FileName:="", Link:=""
 With ActiveDocument.Styles("Стиль1").Font
  .Name = "Arial"
  .Size = 20
  .Bold = True
  .Italic = True
  .Underline = wdUnderlineSingle
  .UnderlineColor = wdColorAutomatic
  .StrikeThrough = False
  .DoubleStrikeThrough = False
  .Outline = False
  .Emboss = False
  .Shadow = False
  .Hidden = False
  .SmallCaps = False
  .AllCaps = False
  .Color = wdColorAutomatic
  .Engrave = False
  .Superscript = False
  .Subscript = False
  .Scaling = 100
  .Kerning = 0
  .Animation = wdAnimationNone
 End With
 With ActiveDocument.Styles("Стиль1").ParagraphFormat
  .LeftIndent = CentimetersToPoints(0)
  .RightIndent = CentimetersToPoints(0)
  .SpaceBefore = 0
  .SpaceBeforeAuto = False
  .SpaceAfter = 0
  .SpaceAfterAuto = False
  .LineSpacingRule = wdLineSpaceSingle
  .Alignment = wdAlignParagraphCenter
  .WidowControl = True
  .KeepWithNext = False
  .KeepTogether = False
  .PageBreakBefore = False
  .NoLineNumber = False
  .Hyphenation = True
  .FirstLineIndent = CentimetersToPoints(0.95)
  .OutlineLevel = wdOutlineLevelBodyText
  .CharacterUnitLeftIndent = 0
  .CharacterUnitRightIndent = 0
  .CharacterUnitFirstLineIndent = 0
  .LineUnitBefore = 0
  .LineUnitAfter = 0
  .MirrorIndents = False
  .TextboxTightWrap = wdTightNone
 End With
 ActiveDocument.Styles("Стиль1").NoSpaceBetweenParagraphsOfSameStyle = _
  False
 ActiveDocument.Styles("Стиль1").ParagraphFormat.TabStops.ClearAll
 With ActiveDocument.Styles("Стиль1").ParagraphFormat
  With .Shading
   .Texture = wdTextureNone
   .ForegroundPatternColor = wdColorAutomatic
   .BackgroundPatternColor = wdColorAutomatic
  End With
  .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
  .Borders(wdBorderRight).LineStyle = wdLineStyleNone
  .Borders(wdBorderTop).LineStyle = wdLineStyleNone
  .Borders(wdBorderBottom).LineStyle = wdLineStyleNone
  With .Borders
   .DistanceFromTop = 1
   .DistanceFromLeft = 4
   .DistanceFromBottom = 1
   .DistanceFromRight = 4
   .Shadow = False
  End With
 End With
 ActiveDocument.Styles("Стиль1").LanguageID = wdRussian
 ActiveDocument.Styles("Стиль1").NoProofing = False
 ActiveDocument.Styles("Стиль1").Frame.Delete
 WordBasic.NewStyle
End Sub
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 11.03.2013, 17:07   #3
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Пункт 1

shanemac51, вот этот код не только создаёт стиль, но ещё и применяет его к тексту, где находится курсор. Поэтому тоже плохой вариант.
Код:
 WordBasic.FormatStyle Name:="Стиль1", NewName:="", BasedOn:="", NextStyle _
  :="", Type:=0, FileName:="", Link:=""

Пункт 2

Можно сделать стиль на основе стиля, в котором находится курсор, но потом надо писать кода на одну - две страницы по сбрасыванию настроек, т.к. у стиля очень много всего.

Пока остаётся один оптимальный вариант - помещение курсора в текст, в котором есть стиль "Обычный", и создание стиля.


Пункт 3

shanemac51, если для вас в интернете шрифт мелкий, то можно увеличивать масштаб. Я практически на всех страницах в интернете увеличиваю масштаб. Делаю так: Ctrl + "+".

Последний раз редактировалось Скрипт; 11.03.2013 в 17:10.
Скрипт вне форума Ответить с цитированием
Старый 11.03.2013, 20:45   #4
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

при CTRL+ теряется размещение полей сообщения

форум настроен на некий размер, иначе [div] и [тb] или обрезаются или накладываются
---
для меня это крайне неудобно
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 11.03.2013, 21:39   #5
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

shanemac51, я пользуюсь "Internet Explorer 9" и масштаб делаю 125% на всех веб-страницах и мне удобно и ничего никуда не уезжает. Монитор у меня 40 сантиметров по диагонали.

Если что-то плохо умещается на мониторе, то я уменьшаю масштаб.
Скрипт вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как создать "специальную вставку" из MS Excel в редактор формул Microsoft Equation 3.0 MS Word Samik Microsoft Office Word 2 21.06.2013 15:24
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
как создать 2 независимые пары "option button" в VBa akif Помощь студентам 0 10.01.2012 23:40
Применить стиль ко всем инпутам, кроме "radio" и "checkbox"? barbiturat HTML и CSS 1 03.12.2008 15:33
Возможно ли средствами Delphi создать "звук" V_X Помощь студентам 2 19.12.2006 18:24