Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений [ 2 ]
- VBA-addict
- майор
- Неактивен
- Зарегистрирован: 12.10.2010
- Сообщений: 66
Тема: Формирование оглавления в уже отформатированном файле
Есть файлы, в которых замечательные пользователи, не имеющие понятия о том, что такое оглавление нагородили огородов...
Задача: создать автооглавления
Идеи по поводу алгоритма:
1) Пройти по документу и найти все абзацы, отличающиеся по форматированию от места, где установлен курсор...
2) Собрать их в конце документа
3) Расставить вручную на них стили, удалив лишнее...
4) Запустить поиск по тексту в соответствии с отформатированным (в конце) псевдооглавлением и в соответствии с ним же применить стили...
Вопросы с тем, как эти все сделать...
особенно интересует (1) т.е. залить куда-то формат выделения, а потом уже как-то его сравнивать с абзацами..
Делай, что можешь, и будь, что будет!
- andrkar
- Модератор
- Неактивен
- Откуда: Томск
- Зарегистрирован: 10.03.2010
- Сообщений: 431
- Поблагодарили: 26
Re: Формирование оглавления в уже отформатированном файле
у меня уже написана часть этой задачи - могу поделиться кодом, если нужно..
Правда это было давно написано, но, тем не мененее.. Определяет формат текста (нормальный, полужирный, курсив, полужирный курсив), определяет цвет фона и цвет шрифта (если использовались цвета из стандартного окна выбора цветов для этих атрибутов).
вот этот код.. Ненужное удалите:
With Selection.Font
.Name = "Times New Roman"
ИмяШрифта = .Name
'MsgBox ИмяШрифта,
РазмерШрифта = .Size
'MsgBox РазмерШрифта
If .Bold = True And .Italic = True Then Шрифт = "полужирный курсив" Else: Шрифт = "Неизвестно"
If Шрифт = "Неизвестно" And .Bold = True And .Italic = False Then Шрифт = "Полужирный"
If Шрифт = "Неизвестно" And .Bold = False And .Italic = True Then Шрифт = "Курсив"
If Шрифт = "Неизвестно" And .Bold = False And .Italic = False Then Шрифт = "Обычный"
MsgBox Шрифт
End With
ИмяСтиля = Selection.Style
MsgBox ИмяСтиля
With ActiveDocument.Styles(Selection.Style).Font
'-----------------------определение имя шрифта-----------------------------
ИмяШрифта = ActiveDocument.Styles(Selection.Style).Font.Name
MsgBox ИмяШрифта
'-----------------------конец определения цвета шрифта---------------------
'-----------------------определение размера шрифта-------------------------
РазмерШрифта = ActiveDocument.Styles(Selection.Style).Font.Size
MsgBox РазмерШрифта
'-----------------------конец определения размера шрифта-------------------
'-----------------------определение начертания шрифта-------------------------
If .Bold = True And .Italic = True Then Шрифт = "полужирный курсив" Else: Шрифт = "Неизвестно"
If Шрифт = "Неизвестно" And .Bold = True And .Italic = False Then Шрифт = "Полужирный"
If Шрифт = "Неизвестно" And .Bold = False And .Italic = True Then Шрифт = "Курсив"
If Шрифт = "Неизвестно" And .Bold = False And .Italic = False Then Шрифт = "Обычный"
MsgBox Шрифт
'-----------------------определение начертания шрифта-------------------------
'-----------------------определение цвета шрифта---------------------------
ЦШ = .Color
Select Case ЦШ
Case Is = wdColorAutomatic
ЦветШрифта = "Авто"
Case Is = wdColorBlack
ЦветШрифта = "Черный"
Case Is = wdColorBrown
ЦветШрифта = "Коричневый"
Case Is = wdColorOliveGreen
ЦветШрифта = "Оливковый"
Case Is = wdColorDarkGreen
ЦветШрифта = "Темно-зеленый"
Case Is = wdColorDarkTeal
ЦветШрифта = "Темно-сизый"
Case Is = wdColorDarkBlue
ЦветШрифта = "Темно-синий"
Case Is = wdColorIndigo
ЦветШрифта = "Индиго"
Case Is = wdColorGray80
ЦветШрифта = "Серый 80%"
Case Is = wdColorDarkRed
ЦветШрифта = "Темно-красный"
Case Is = wdColorOrange
ЦветШрифта = "Оранжевый"
Case Is = wdColorDarkYellow
ЦветШрифта = "Коричнево-зеленый"
Case Is = wdColorGreen
ЦветШрифта = "Зеленый"
Case Is = wdColorTeal
ЦветШрифта = "Сине-зеленый"
Case Is = wdColorBlue
ЦветШрифта = "Синий"
Case Is = wdColorBlueGray
ЦветШрифта = "Сизый"
Case Is = wdColorGray50
ЦветШрифта = "Серый 50%"
Case Is = wdColorRed
ЦветШрифта = "Красный"
Case Is = wdColorLightOrange
ЦветШрифта = "Светло-оранжевый"
Case Is = wdColorLime
ЦветШрифта = "Травяной"
Case Is = wdColorSeaGreen
ЦветШрифта = "Изумрудный"
Case Is = wdColorAqua
ЦветШрифта = "Темно-бирюзовый"
Case Is = wdColorLightBlue
ЦветШрифта = "Темно-голубой"
Case Is = wdColorViolet
ЦветШрифта = "Фиолетовый"
Case Is = wdColorGray40
ЦветШрифта = "Серый 40%"
Case Is = wdColorPink
ЦветШрифта = "Лиловый"
Case Is = wdColorGold
ЦветШрифта = "Золотисный"
Case Is = wdColorYellow
ЦветШрифта = "Желтый"
Case Is = wdColorBrightGreen
ЦветШрифта = "Ярко-зеленый"
Case Is = wdColorTurquoise
ЦветШрифта = "Бирюзовый"
Case Is = wdColorSkyBlue
ЦветШрифта = "Голубой"
Case Is = wdColorPlum
ЦветШрифта = "Вишневый"
Case Is = wdColorGray25
ЦветШрифта = "Серый 25%"
Case Is = wdColorRose
ЦветШрифта = "Розовый"
Case Is = wdColorTan
ЦветШрифта = "Светло-коричневый"
Case Is = wdColorLightYellow
ЦветШрифта = "Светло-желтый"
Case Is = wdColorLightGreen
ЦветШрифта = "Бледно-зеленый"
Case Is = wdColorLightTurquoise
ЦветШрифта = "Светло-бирюзовый"
Case Is = wdColorPaleBlue
ЦветШрифта = "Бледно-голубой"
Case Is = wdColorLavender
ЦветШрифта = "Сиреневый"
Case Is = wdColorWhite
ЦветШрифта = "Белый"
End Select
MsgBox ЦветШрифта
'-----------------------Конец определения цвета шрифта-----------------------------
'--------------------Определение типа и цвета подчеркивания------------------------
If .Underline <> wdUnderlineNone And .Underline <> wdUnderlineWords Then
ТипПодчеркивания = .Underline
Application.Keyboard (1049)
Selection.TypeText Text:="Тип подчеркивания"
Selection.Extend
Selection.Extend
Selection.Extend
ЦПШ = .UnderlineColor
Select Case ЦПШ
Case Is = wdColorAutomatic
ЦветПодчеркивания = "Авто"
Case Is = wdColorBlack
ЦветПодчеркивания = "Черный"
Case Is = wdColorBrown
ЦветПодчеркивания = "Коричневый"
Case Is = wdColorOliveGreen
ЦветПодчеркивания = "Оливковый"
Case Is = wdColorDarkGreen
ЦветПодчеркивания = "Темно-зеленый"
Case Is = wdColorDarkTeal
ЦветПодчеркивания = "Темно-сизый"
Case Is = wdColorDarkBlue
ЦветПодчеркивания = "Темно-синий"
Case Is = wdColorIndigo
ЦветПодчеркивания = "Индиго"
Case Is = wdColorGray80
ЦветПодчеркивания = "Серый 80%"
Case Is = wdColorDarkRed
ЦветПодчеркивания = "Темно-красный"
Case Is = wdColorOrange
ЦветПодчеркивания = "Оранжевый"
Case Is = wdColorDarkYellow
ЦветПодчеркивания = "Коричнево-зеленый"
Case Is = wdColorGreen
ЦветПодчеркивания = "Зеленый"
Case Is = wdColorTeal
ЦветПодчеркивания = "Сине-зеленый"
Case Is = wdColorBlue
ЦветПодчеркивания = "Синий"
Case Is = wdColorBlueGray
ЦветПодчеркивания = "Сизый"
Case Is = wdColorGray50
ЦветПодчеркивания = "Серый 50%"
Case Is = wdColorRed
ЦветПодчеркивания = "Красный"
Case Is = wdColorLightOrange
ЦветПодчеркивания = "Светло-оранжевый"
Case Is = wdColorLime
ЦветПодчеркивания = "Травяной"
Case Is = wdColorSeaGreen
ЦветПодчеркивания = "Изумрудный"
Case Is = wdColorAqua
ЦветПодчеркивания = "Темно-бирюзовый"
Case Is = wdColorLightBlue
ЦветПодчеркивания = "Темно-голубой"
Case Is = wdColorViolet
ЦветПодчеркивания = "Фиолетовый"
Case Is = wdColorGray40
ЦветПодчеркивания = "Серый 40%"
Case Is = wdColorPink
ЦветПодчеркивания = "Лиловый"
Case Is = wdColorGold
ЦветПодчеркивания = "Золотисный"
Case Is = wdColorYellow
ЦветПодчеркивания = "Желтый"
Case Is = wdColorBrightGreen
ЦветПодчеркивания = "Ярко-зеленый"
Case Is = wdColorTurquoise
ЦветПодчеркивания = "Бирюзовый"
Case Is = wdColorSkyBlue
ЦветПодчеркивания = "Голубой"
Case Is = wdColorPlum
ЦветПодчеркивания = "Вишневый"
Case Is = wdColorGray25
ЦветПодчеркивания = "Серый 25%"
Case Is = wdColorRose
ЦветПодчеркивания = "Розовый"
Case Is = wdColorTan
ЦветПодчеркивания = "Светло-коричневый"
Case Is = wdColorLightYellow
ЦветПодчеркивания = "Светло-желтый"
Case Is = wdColorLightGreen
ЦветПодчеркивания = "Бледно-зеленый"
Case Is = wdColorLightTurquoise
ЦветПодчеркивания = "Светло-бирюзовый"
Case Is = wdColorPaleBlue
ЦветПодчеркивания = "Бледно-голубой"
Case Is = wdColorLavender
ЦветПодчеркивания = "Сиреневый"
Case Is = wdColorWhite
ЦветПодчеркивания = "Белый"
End Select
MsgBox ЦветПодчеркивания
With Selection.Font
.Underline = ТипПодчеркивания
.UnderlineColor = ЦветПодчеркивания
.Color = wdColorWhite
MsgBox ЦветПодчеркивания
End With
End If
.Color = wdColorAutomatic
End With
Сообщений [ 2 ]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Формирование оглавления в уже отформатированном файле
Если говорить о приложениях из офисного пакета, то самая популярная, разумеется, Microsoft Word. Вряд ли в ближайшее время у нее вдруг возникнет серьезный конкурент, который сможет сместить с лидерских позиций. Наш сайт о Microsoft Office Word даст ответ про: рамка спецификации ворд 2007.
Хотя текстовых редакторов много, но, у нас в стране, по крайней мере, Ворд значительно опережает другие. На портале о Microsoft Office Word вы узнаете про: совместимость с word 2003.
На сайте, посвященном Microsoft Word, вы найдете множество необходимых сведений, а какие-то проблемы, детали и нюансы можно обсудить на форуме Ворд Эксперт. Наш сайт о Microsoft Office Word даст ответ про: можно ли вставить видео в ворд?.
Довольно простая и удобная пользователю регистрационная система, которая досконально объяснена в основном разделе, доступный и понятный всем язык общения, хорошая модерация, исключающая спам и флуд, это так сказать общечеловеческие достоинства форума. Наш сайт о Microsoft Office Word даст ответ про: как перевести файл в формат html.
С точки зрения предмета обсуждения все так же устроено очень разумно. Вопросы, которые приходят на ум большому количеству пользователей, вынесены в главный раздел, а остальным можно обсудить в разделах, посвященных настройкам, редактированию и форматированию текста, шаблонам, а так же автоматизации процесса. Наш сайт о Microsoft Office Word даст ответ про: примеры готовых макросов в эксель.
Участникам предложено самим научиться создавать макросы, использовать готовые или оставить заказ. По такому же принципу решаются все остальные вопросы. Наш сайт о Microsoft Office Word даст ответ про: в word все размеры в пт как перевести в см.
Есть и общие темы, не вошедшие в главные разделы и подфорум, где можно высказать свои пожелания.