Страница 1 из 1

Макрос для word

Добавлено: 10 сен 2010, 14:48
КИС
Добрый день, уважемые форумчане...
Вообщем такая проблема, не могли бы подсказать, как правильно написать скрипт на VBA, работать должен вот так(пример):
Дается текст:

15.25 "ИНТЕРНЫ". Ситком.
16.00 "ИНТЕРНЫ". Ситком.
16.30 "ИНТЕРНЫ". Ситком.

Нужно чтобы было вот так:

15.25, 16.00, 16.30 "ИНТЕРНЫ". Ситком.

Или еще вот так (к примеру):
Дается текст:

15.25 "ИНТЕРНЫ". Ситком.
16.00 "УНИВЕР". Ситком.
16.30 "ИНТЕРНЫ". Ситком.

Нужно чтобы было вот так:

15.25, 16.30 "ИНТЕРНЫ". Ситком.
16.00 "УНИВЕР". Ситком.

Все обыскал, не могу решить...
Помогите решить, может кто нибудь натыкался, дайте ссылку, если есть.

Re: Макрос для word

Добавлено: 10 сен 2010, 19:18
EducatedFool
Если бы исходный текст был не в Word, а в Excel - все можно было бы сделать одной функцией: http://excelvba.ru/code/JoinedArray

Re: Макрос для word

Добавлено: 10 сен 2010, 21:21
КИС
Да нет, в том то и дело, что нужно для word, а про excel я знаю...

Re: Макрос для word

Добавлено: 11 сен 2010, 08:52
AlexEL
Попробуй так:

Код: Выделить всё

Public Sub Программа()
    ' сортируем по названиям
    ActiveDocument.Range.Sort _
        ExcludeHeader:=False, _
        FieldNumber:=2, _
        SortFieldType:=Word.wdSortFieldStroke, _
        SortOrder:=Word.wdSortOrderAscending, _
        FieldNumber2:=1, _
        SortFieldType2:=Word.wdSortFieldStroke, _
        SortOrder2:=Word.wdSortOrderAscending, _
        CaseSensitive:=True, _
        Separator:=" "
    ' удаляем дубликаты названий
    With ActiveDocument.Range.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .MatchWildcards = True
        .Wrap = wdFindContinue
        .Text = "([0-9., ]@)( ""[!^13]@^13)([0-9., ]@)(\2)"
        .Replacement.Text = "\1, \3\4"
        While .Execute(Replace:=Word.wdReplaceAll): Wend
    End With
    ' сортируем по времени
    ActiveDocument.Range.Sort _
        ExcludeHeader:=False, _
        FieldNumber:=1, _
        SortFieldType:=Word.wdSortFieldNumeric, _
        SortOrder:=Word.wdSortOrderAscending, _
        FieldNumber2:=2, _
        SortFieldType2:=Word.wdSortFieldNumeric, _
        SortOrder2:=Word.wdSortOrderAscending, _
        Separator:="."
End Sub

Re: Макрос для word

Добавлено: 11 сен 2010, 13:17
КИС
Хорошо, щас проверю...

Re: Макрос для word

Добавлено: 12 сен 2010, 08:32
Busine2009
КИС
только Ситком встречается? В остальном меняется только время и название передач?
Т. е. одинаковые названия передач надо объединять?
Сколько дней находится в одном документе? Нужен макрос, который сразу все дни обработает или можно выделять день и его обрабатывать, а затем к следующему переходить? Если несколько дней, то какие они имею заголовки (что написано, например, понедельник).
Чтобы много не писать, лучше вставь образец файла.

Re: Макрос для word

Добавлено: 12 сен 2010, 19:16
КИС
Ну вообщем каналов много, и обрабатывать нужно все дни, соответственно названия каналов не меняется практически, меняется только время, одинаковые нужно объединить, хотел бы запускать макрос после выделения к примеру понедельника, потом вторник, потом прогонять по среду, ну так и далее... Ладно вечером в понедельник, или во вторник выложу образец, и оригинал и обработанный (правда эти моменты, ну эти объединения еще не автоматизаровал), поэтому делаем в ручную, а это практически потеря 6 часов... Пока еще копаюсь VBA целыми днями, пытаюсь облегчить труд себе, возможно еще кому нибудь пригодяться...

Re: Макрос для word

Добавлено: 13 сен 2010, 07:53
EducatedFool
Посмотрите макрос во вложении в этом сообщении: http://www.programmersforum.ru/showpost ... stcount=11
Там есть что-то связанное с обработкой телепрограмм.

Re: Макрос для word

Добавлено: 14 сен 2010, 21:17
КИС
Спасибо большое, к этому я присматривался...