Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как создать таблицу в Word 2007 программно? / 12 сообщений из 12, страница 1 из 1
21.06.2010, 05:42
    #36697572
Katsy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать таблицу в Word 2007 программно?
Доброе время суток, уважаемые!

Создаю документы на основе существующего. Необходимо в каждом новом документе формировать таблицу с переменным значением строк, которое будет браться из запроса. Пишу так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
    Set ObjWord = New Word.Application
    PathDOT = "C:"

    rs.MoveFirst
    intRows =  0 
    Do While Not rs.EOF
        intRows = intRows +  1 
        rs.MoveNext
    Loop
    rs.MoveFirst
    
    arrayRows = rs.GetRows(intRows)
    '
    Dim tblList As Table

    For intLoopRow =  0  To intRows -  1 
        ObjWord.Documents.Add PathDOT & "\" & "Распоряжение.doc"
        ObjWord.Visible = True
 
        Set tblList = ActiveDocument.Tables.Add(Selection.Range, NumRows:= 1 , NumColumns:= 4 )
        With Selection.Tables( 1 )
            If .Style <> "Сетка таблицы" Then
                .Style = "Сетка таблицы"
            End If
            .ApplyStyleHeadingRows = True
            .ApplyStyleLastRow = False
            .ApplyStyleFirstColumn = True
            .ApplyStyleLastColumn = False
            .ApplyStyleRowBands = True
            .ApplyStyleColumnBands = False
        End With
    Next

    Set ObjWord = Nothing
    rs.Close
Программа вставляет все таблицы в документ-шаблон. Мне надо, чтобы вставляла в созданный на основе шаблона. Как сделать?
...
Рейтинг: 0 / 0
21.06.2010, 09:22
    #36697640
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать таблицу в Word 2007 программно?
Код: plaintext
1.
2.
3.
4.
5.
6.
Dim MyDoc As Document
...
...
Set MyDoc = ObjWord.Documents.Add(PathDOT & "\" & "Распоряжение.doc")
...
...
Set tblList = MyDoc.Tables.Add(Selection.Range, NumRows:= 1 , NumColumns:= 4 )
...
Рейтинг: 0 / 0
21.06.2010, 09:57
    #36697691
Katsy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать таблицу в Word 2007 программно?
Shocker.Pro,

так, во-первых, таблица не вставляется, во-вторых на втором документе появляется ошибка:
Код: plaintext
Method 'Add' of object 'Tables' failed
...
Рейтинг: 0 / 0
21.06.2010, 10:04
    #36697701
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать таблицу в Word 2007 программно?
Katsyна втором документе
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim MyDoc As Document
...
...
Set MyDoc = Nothing
Set MyDoc = ObjWord.Documents.Add(PathDOT & "\" & "Распоряжение.doc")
...
...
Set tblList = MyDoc.Tables.Add(Selection.Range, NumRows:= 1 , NumColumns:= 4 )

Ваш код для вставки таблицы я не менял - смотрите сами причину. Но меня смущает одновременное использование обычных и именованных параметров.
Далее, вы там используете
Код: plaintext
Selection.Range
однако, не вижу, где вы его программируете.
...
Рейтинг: 0 / 0
21.06.2010, 10:10
    #36697715
Katsy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать таблицу в Word 2007 программно?
Shocker.Pro,

Спасибо, буду смотреть
...
Рейтинг: 0 / 0
21.06.2010, 10:12
    #36697720
Katsy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать таблицу в Word 2007 программно?
Shocker.Pro,

не помогло, всё равно вылетает с той же ошибкой
...
Рейтинг: 0 / 0
21.06.2010, 10:15
    #36697727
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать таблицу в Word 2007 программно?
Katsyне помогло, всё равно вылетает с той же ошибкой
Не помогло что?
Я дал три совета, опубликуйте получившийся код
...
Рейтинг: 0 / 0
21.06.2010, 10:23
    #36697745
Katsy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать таблицу в Word 2007 программно?
Shocker.Pro,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
    Set ObjWord = New Word.Application
    PathDOT = "C:"
    Dim Doc As Document
    
    Dim tblList As Table
    
    For intLoopRow =  0  To intRows -  1 
        ObjWord.Documents.Add PathDOT & "\" & "Распоряжение.doc"
        ObjWord.Visible = True
        Set Doc = Nothing
        Set Doc = ObjWord.Documents.Add(PathDOT & "\" & "Распоряжение.doc")
        Selection.EndKey Unit:=wdStory
        Set tblList = Doc.Tables.Add(Selection.Range, NumRows:= 1 , NumColumns:= 4 )
        With tblList
            If .Style <> "Сетка таблицы" Then
                .Style = "Сетка таблицы"
            End If
            .ApplyStyleHeadingRows = True
            .ApplyStyleLastRow = False
            .ApplyStyleFirstColumn = True
            .ApplyStyleLastColumn = False
            .ApplyStyleRowBands = True
            .ApplyStyleColumnBands = False
        End With
    Next

    Set ObjWord = Nothing
...
Рейтинг: 0 / 0
21.06.2010, 10:27
    #36697755
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать таблицу в Word 2007 программно?
Повторюсь, меня смущает использование объекта Selection. Скорее всего, Selection у вас находится в одном документе, а Tables.Add теперь в другом - вот и возникает ошибка.
...
Рейтинг: 0 / 0
21.06.2010, 10:28
    #36697758
Katsy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать таблицу в Word 2007 программно?
Shocker.ProДалее, вы там используете
Код: plaintext
Selection.Range
однако, не вижу, где вы его программируете.
В справке есть такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub NewTable()
    Dim docNew As Document
    Dim tblNew As Table
    Dim intX As Integer
    Dim intY As Integer

    Set docNew = Documents.Add
    Set tblNew = docNew.Tables.Add(Selection.Range,  3 ,  5 )
    With tblNew
    For intX =  1  To  3 
        For intY =  1  To  5 
            .Cell(intX, intY).Range.InsertAfter "Cell: R" & intX & ", C" & intY
        Next intY
    Next intX
    .Columns.AutoFit
    End With
End Sub
тут тоже нигде предварительно не программировалось
...
Рейтинг: 0 / 0
21.06.2010, 10:30
    #36697766
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать таблицу в Word 2007 программно?
Katsy
В справке есть такой код:
тут тоже нигде предварительно не программировалось
Однако, это в пределах одного документа, а у вас - разные
...
Рейтинг: 0 / 0
21.06.2010, 10:31
    #36697771
Katsy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать таблицу в Word 2007 программно?
Shocker.Pro,

да, спасибо!!!
Код: plaintext
1.
2.
        Doc.ActiveWindow.Selection.EndKey Unit:=wdStory
        Set tblList = Doc.Tables.Add(Doc.ActiveWindow.Selection.Range, NumRows:= 1 , NumColumns:= 4 )
так работает
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как создать таблицу в Word 2007 программно? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]