Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #3
Добавлено: 27.01.08 18:54
Это реально. Вот кусок кода, написанный на VBA, при этом код выполняется из Excel (ну это не так важно). Код заполняет одну табличку в Word и ещё кое-что. Хотя сказать честно, делать любые таблицы в Word - дело неблагодарное.
Public Sub WordTest()
    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 стороны, ничего более умного. Так вот!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам