Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   Вопрос- ответ. Поставить по алфавиту. (http://forum.oszone.net/showthread.php?t=234726)

cher 15-05-2012 21:49 1916594

Вопрос- ответ. Поставить по алфавиту.
 
Есть такая задачка......
Вопросник - ответник. Надо вопросы отсортировать по алфавиту(так чтоб ответы "прикреплялись" к своим ответам)
Помню как то делал разок при помощи абзац-сортировка по алфавиту.
Но тут трудности. Документов много и они объемные(выделять замучаешься)- и как к ним прикрепить ответы не понятно....
+ Перед каждой строкой стоит Вопрос , Ответ(как их игнорировать тоже не знаю)
Варианты прикрепляю.....
как есть-

как примерно надо -

..Вопрос -Ответ убрал.... как бы далее?

Iska 16-05-2012 01:33 1916709

cher, примерно так:
Код:

Option Explicit

Sub ReformatDocument()
    Const strQuestionTag = "ВОПРОС - "
    Const strAnswerTag = "ОТВЕТ - "
   
    Dim objParagraph As Paragraph
    Dim objDocument As Document
    Dim objRange As Range
   
   
    Set objDocument = Application.Documents.Add()
    Set objRange = objDocument.Range
   
    For Each objParagraph In ThisDocument.Content.Paragraphs
        If Trim(objParagraph.Range.Text) = vbCr Then
            ' Nothing to do
        ElseIf Left(objParagraph.Range.Text, Len(strQuestionTag)) = strQuestionTag Then
            With objRange
                .InsertAfter Mid(objParagraph.Range.Text, Len(strQuestionTag) + 1)
                .Bold = True
                .Collapse wdCollapseEnd
            End With
        ElseIf Left(objParagraph.Range.Text, Len(strAnswerTag)) = strAnswerTag Then
            With objRange
                .InsertAfter Mid(objParagraph.Range.Text, Len(strAnswerTag) + 1)
                .Bold = False
                .Collapse wdCollapseEnd
            End With
        End If
    Next
End Sub

Вставьте данный код в модуль «ThisDocument» документа и выполните его. Получите новый документ потребного вида.

cher 16-05-2012 07:15 1916754

Iska, Огромное спасибо!
Но я раньше с макросами не работал, даже не знаю как правильно... не подскажете? :sorry:
Делаю так :
1- Открываю нужный документ
2- Макросы- создать
3- Вставляю приведенный вами скрипт в окно
4 - Жму значок записи(Runsub/UserForm)
5- У меня открывается еще один пустой документ word
6- Навожу на ThisDocument - жму Run Macro далее run... открывается еще один документ(пустой).
7- В пустой документ копирую текст - Макросы -выполнить. Опять пустой документ.

... вроде как что то получилось, но не по алфавиту.

Iska 16-05-2012 20:55 1917249

Цитата:

Цитата cher
Делаю так :
1- Открываю нужный документ
»

Смотрите здесь: Начало работы с VBA в Word 2010, начиная отсюда:
Цитата:


Работа в редакторе Visual Basic

Макросы для Word пишутся на языке программирования Visual Basic for Applications (VBA).

Макросы создаются в компоненте Word, который большинство пользователей никогда не видят, — в редакторе Visual Basic (VBE). Открыть редактор Visual Basic можно одним из указанных ниже способов.

* Нажмите сочетание клавиш ALT + F11

и т.д. Код Вам будет нужно поместить именно в сам документ (несмотря на то, что указанная статья сие не рекомендует), в модуль «ThisDocument».

P.S. После того, как код у Вас заработает на одном, выложенном Вами документе, поговорим более подробно про:
Цитата:

Цитата cher
Документов много и они объемные »

и как с этим лучше поступить.

cher 16-05-2012 21:01 1917252

Iska, Ок!
Цитата:

Цитата Iska
Смотрите здесь: Начало работы с VBA в Word 2010, начиная отсюда: »

Это я смотрел , но "вскользь" т.к у меня не сработало
Цитата:

Цитата Iska
Нажмите сочетание клавиш ALT + F11 »

Из за этого я и пошел в наглую в макросы.....
Добьюсь нужного результата/отсутствие оного- отпишусь.
Спасибо за поддержку! :)


Время: 08:46.

Время: 08:46.
© OSzone.net 2001-