Показать полную графическую версию : Вопрос- ответ. Поставить по алфавиту.
Есть такая задачка......
Вопросник - ответник. Надо вопросы отсортировать по алфавиту(так чтоб ответы "прикреплялись" к своим ответам)
Помню как то делал разок при помощи абзац-сортировка по алфавиту.
Но тут трудности. Документов много и они объемные(выделять замучаешься)- и как к ним прикрепить ответы не понятно....
+ Перед каждой строкой стоит Вопрос , Ответ(как их игнорировать тоже не знаю)
Варианты прикрепляю.....
как есть- http://s019.radikal.ru/i600/1205/97/c68ff42bea74t.jpg (http://radikal.ru/F/s019.radikal.ru/i600/1205/97/c68ff42bea74.png.html)
как примерно надо - http://s019.radikal.ru/i635/1205/3e/73e344d15437t.jpg (http://radikal.ru/F/s019.radikal.ru/i635/1205/3e/73e344d15437.jpg.html)
..Вопрос -Ответ убрал.... как бы далее?
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» документа и выполните его. Получите новый документ потребного вида.
Iska, Огромное спасибо!
Но я раньше с макросами не работал, даже не знаю как правильно... не подскажете? :sorry:
Делаю так :
1- Открываю нужный документ
2- Макросы- создать
3- Вставляю приведенный вами скрипт в окно
4 - Жму значок записи(Runsub/UserForm)
5- У меня открывается еще один пустой документ word
6- Навожу на ThisDocument - жму Run Macro далее run... открывается еще один документ(пустой).
7- В пустой документ копирую текст - Макросы -выполнить. Опять пустой документ.
... вроде как что то получилось, но не по алфавиту.
http://s019.radikal.ru/i639/1205/22/9c11de1d2580t.jpg (http://radikal.ru/F/s019.radikal.ru/i639/1205/22/9c11de1d2580.png.html)
Делаю так :
1- Открываю нужный документ
…»
Смотрите здесь: Начало работы с VBA в Word 2010 (http://msdn.microsoft.com/ru-ru/library/ff604039.aspx), начиная отсюда:
…
Работа в редакторе Visual Basic
Макросы для Word пишутся на языке программирования Visual Basic for Applications (VBA).
Макросы создаются в компоненте Word, который большинство пользователей никогда не видят, — в редакторе Visual Basic (VBE). Открыть редактор Visual Basic можно одним из указанных ниже способов.
* Нажмите сочетание клавиш ALT + F11
…
и т.д. Код Вам будет нужно поместить именно в сам документ (несмотря на то, что указанная статья сие не рекомендует), в модуль «ThisDocument».
P.S. После того, как код у Вас заработает на одном, выложенном Вами документе, поговорим более подробно про:
Документов много и они объемные »
и как с этим лучше поступить.
Iska, Ок! Смотрите здесь: Начало работы с VBA в Word 2010, начиная отсюда: »
Это я смотрел , но "вскользь" т.к у меня не сработало Нажмите сочетание клавиш ALT + F11 »
Из за этого я и пошел в наглую в макросы.....
Добьюсь нужного результата/отсутствие оного- отпишусь.
Спасибо за поддержку! :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.