Страница: 1 |
Страница: 1 |
Вопрос: Word! Загнать текст в таблицу
Добавлено: 22.01.08 14:27
Автор вопроса: Annie
Привет всем. У меня есть тесты(один документ).
Как можно распределить их по ячейкам в таблице в другом документе?
В один столбец номер варианта, в другой номер теста,-уже есть; в третий нужно вставить сам вопрос с вариантами ответов .
думаю здесь нужен цикл в макросе,вообще как в VBA указывается символ(например найти символ, если он число(номер теста), жирный, то выделить область от него до след жирного номера),скопировать и вставить в другой документ в таблицу в ячейку, где в этой же строке стоит его номер теста.)
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
bi-lya
Вопросов: 1
Ответов: 125
Профиль | | #1
Добавлено: 23.01.08 03:54
Посмотреть бы, конечно. На слух как-то не воспринимается.
Номер ответа: 2
Автор ответа:
Annie
Вопросов: 19
Ответов: 40
Профиль | | #2
Добавлено: 27.01.08 16:50
bi-lya, думаешь это нереально?
Номер ответа: 3
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #3
Добавлено: 27.01.08 18:54
Это реально. Вот кусок кода, написанный на VBA, при этом код выполняется из Excel (ну это не так важно). Код заполняет одну табличку в Word и ещё кое-что. Хотя сказать честно, делать любые таблицы в Word - дело неблагодарное.
Dim i As Integer
Dim wd As Word.Application
Dim dc As Word.Document
Dim sl As Word.Selection
Set wd = New Word.Application
wd.Visible = True
Set dc = wd.Documents.Open(Sh1.Cells(6, 3).Value)
Set sl = dc.ActiveWindow.Selection
sl.WholeStory
sl.Copy
dc.Close
Set dc = wd.Documents.Open(Sh1.Cells(5, 3).Value)
Set sl = dc.ActiveWindow.Selection
sl.EndKey Unit:=wdStory
sl.InsertBreak Type:=wdPageBreak
sl.Paste
sl.TypeBackspace
sl.Find.Text = "Счёт № "
sl.Find.Forward = False
sl.Find.Execute
sl.MoveRight wdCharacter
sl.TypeText Sh1.Cells(23, 8).Value
sl.MoveRight wdCharacter, 4
sl.TypeText Format$(CDate(Sh1.Cells(24, 8).Value), "dd.mm.yyyy"
sl.Find.Text = "накл. № "
sl.Find.Forward = True
sl.Find.Execute
sl.MoveRight wdCharacter
sl.TypeText Sh1.Cells(23, 4).Value
sl.MoveRight wdCharacter, 4
sl.TypeText Format$(CDate(Sh1.Cells(24, 8).Value), "dd.mm.yyyy"
sl.Find.Text = "Кол-во (шт)"
sl.Find.Forward = True
sl.Find.Execute
sl.MoveDown wdLine
For i = 9 To 22
If Sh1.Cells(i, 8).Value > 0 Then sl.TypeText Sh1.Cells(i, 8).Value
sl.MoveDown wdLine
Next 'i
sl.MoveDown wdLine, 3
For i = 25 To 26
sl.TypeText Sh1.Cells(i, 8).Value
sl.MoveDown wdLine
Next 'i
sl.MoveUp wdLine, 19
sl.MoveRight wdCell, 2
For i = 9 To 25
If Sh1.Cells(i, 9).Value > 0 Then sl.TypeText Format$(Sh1.Cells(i, 9).Value, "# ##0.00"
sl.MoveDown wdLine
Next 'i
sl.MoveUp wdLine, 17
sl.MoveRight wdCell, 2
For i = 9 To 25
If i = 23 Then sl.MoveDown wdLine, 3
If Sh1.Cells(i, 10).Value > 0 Then sl.TypeText Format$(Sh1.Cells(i, 10).Value, "0.0"
sl.MoveDown wdLine
Next 'i
sl.MoveDown wdLine
sl.TypeText Sh1.Cells(25, 1).Value
sl.MoveDown wdLine, 5
sl.TypeText Sh1.Cells(24, 2).Value & " îò " & Format$(CDate(Sh1.Cells(24, 8).Value), "dd.mm.yyyy" & " ã."
Set sl = Nothing
Set dc = Nothing
Set wd = Nothing
End Sub
В общем при желании можешь разобраться и сделать по-своему. Главное - это понять принцип работы с таблицами в Word - переход курсора по ячейкам в 4 стороны, ничего более умного. Так вот!