Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / из VB в Word -е скопировать таблицу / 16 сообщений из 16, страница 1 из 1
05.03.2006, 19:19:44
    #33582626
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из VB в Word -е скопировать таблицу
Подскажите, кто знает.
Есть шаблон с таблицей в Word-е, заполняю его из VB, теперь надо просто взять получившуюся таблицу с данными в Word и скопировать ее на тот же лист только ниже строчкой. Т.е. при печати отчета эта таблица должна выходить в 2-х экземплярах.
Делать шаблон с двумя таблицами и заполнять каждую отдельно неудобно, по многим причинам.

Сразу кусок кода если понадобится:
Код: plaintext
1.
2.
3.
4.
5.
6.
Set TableWord = DocWord.Tables( 1 )
TableWord.Cell( 1 ,  1 ).Range.Text = MainForm.NamePr
TableWord.Cell( 2 ,  1 ).Range.Text = MainForm.Bank
. и т.д.

а теперь все что получилось скопировать ниже.
...
Рейтинг: 0 / 0
06.03.2006, 08:48:07
    #33583083
из VB в Word -е скопировать таблицу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    Dim tbl As Table
    Dim rng As Range
    
    With ActiveDocument
        Set rng = .Paragraphs(.Paragraphs.Count).Range
        Set tbl = .Tables( 1 )
    End With
    
    tbl.Range.Copy
    
    With rng
        .InsertParagraphAfter
        .Collapse Direction:=wdCollapseEnd
        .Paste
    End With
...
Рейтинг: 0 / 0
07.03.2006, 00:19:47
    #33585593
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из VB в Word -е скопировать таблицу
Спасибо работает. Уж прости за нескромность, не работал с Word никогда. Последний вопрос: как вставить пустые строки между таблицами, т.е. определить расстояние между копиями? У меня это разделительная полоса.
...
Рейтинг: 0 / 0
07.03.2006, 08:00:12
    #33585772
из VB в Word -е скопировать таблицу
Andrey13Как вставить пустые строки между таблицами?
Код: plaintext
    .InsertParagraphAfter
...
Рейтинг: 0 / 0
07.03.2006, 16:50:12
    #33587355
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из VB в Word -е скопировать таблицу
Пользователь2, спасибо.
...
Рейтинг: 0 / 0
08.03.2006, 23:35:43
    #33588494
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из VB в Word -е скопировать таблицу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 

    Dim tbl As Table
    Dim rng As Range

      With ActiveDocument
        Set rng = .Paragraphs(.Paragraphs.Count).Range
        Set Tbl = .Tables( 1 )
    End With

With ActiveDocument - выдает иногда ошибку Run-time 462 "Remote server does not exist or is unavailable."

Иногда -это при повторном выполнении кода (выводе отчета в Word), .

Вопрос такой от чего может возникать эта ошибка?
"Дистанционный сервер не существует или отсутствует"
...
Рейтинг: 0 / 0
08.03.2006, 23:40:10
    #33588497
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из VB в Word -е скопировать таблицу
Что надо написать, что бы отменить DocWord.Activate предыдущего документа, при повторном открытии следующего?
...
Рейтинг: 0 / 0
09.03.2006, 08:24:16
    #33588667
из VB в Word -е скопировать таблицу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    Dim oWord As Word.Application
    Dim oTable As Word.Table
    Dim oRange As Word.Range

    Set oWord = CreateObject("Word.Application")
    
    With oWord
        .Visible = True
        .Activate
        .WindowState = wdWindowStateNormal
    End With

    With oWord.ActiveDocument
        Set oRange = .Paragraphs(.Paragraphs.Count).Range
        Set oTable = .Tables( 1 )
    End With

Т.е.

Код: plaintext
    With ActiveDocument

Надо поменять на

Код: plaintext
    With oWord.ActiveDocument

Вот первая и вторая статья на эту тему.
...
Рейтинг: 0 / 0
13.03.2006, 20:18:05
    #33597975
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из VB в Word -е скопировать таблицу
Спасибо, помогло.
...
Рейтинг: 0 / 0
18.03.2006, 10:49:41
    #33609604
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из VB в Word -е скопировать таблицу
По вышеприведенному коду у меня все работает (Xp sp2, Off2000), а на некоторых компах выдает что моя программа выполнила недопустимую операцию, (на разных системах, и Off2000 или XP).
В чем может быть дело?
...
Рейтинг: 0 / 0
18.03.2006, 17:07:28
    #33609872
из VB в Word -е скопировать таблицу
Слету трудно сказать в чем причина. Надо посмотреть на полный вариант кода. Узнать на какой именно строке возникает ошибка.
...
Рейтинг: 0 / 0
18.03.2006, 21:31:12
    #33610008
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из VB в Word -е скопировать таблицу
Код: 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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
Private Sub M_REPORT_Click()
 Dim Tbl As Table
 Dim rng As Range

Dolg = Round(Label13,  2 )
FormDolg.Text1 = Dolg
FormDolg.Show  1 

Dim WordApp As Word.Application 
Dim DocWord As Word.Document 
Dim TableWord As Word.Table

nameRP = "IzvR"

Set WordApp = New Word.Application
WordApp.Visible = True
Set DocWord = WordApp.Documents.Open(App.Path + "\rep\" + nameRP + ".doc")
DocWord.Activate

On Error GoTo est
If Err.Number <>  5356  Then
DocWord.SaveAs (App.Path + "\Temp\" + nameRP)

est:
 End If
If Err.Number =  5356  Then
Err.Clear
nameRP = Trim(Trim(nameRP) + Trim(Str(Int(Rnd() *  1000 ))))
DocWord.SaveAs (App.Path + "\Temp\" + nameRP + ".doc")
End If

WordApp.Options.CheckSpellingAsYouType = False
Set DocWord = WordApp.Documents.Open(App.Path + "\Temp\" + nameRP + ".doc")
DocWord.Activate
Set TableWord = DocWord.Tables( 1 )
TableWord.Cell( 1 ,  1 ).Range.Text = MainForm.NamePr
TableWord.Cell( 2 ,  1 ).Range.Text = MainForm.Bank
TableWord.Cell( 3 ,  2 ).Range.Text = MainForm.BIK
TableWord.Cell( 3 ,  4 ).Range.Text = MainForm.KS
TableWord.Cell( 4 ,  4 ).Range.Text = MainForm.RS
TableWord.Cell( 4 ,  2 ).Range.Text = MainForm.INN
TableWord.Cell( 5 ,  2 ).Range.Text = Filter.Fg.TextMatrix(Filter.Fg.Row,  11 )
TableWord.Cell( 6 ,  1 ).Range.Text = Filter.Fg.TextMatrix(Filter.Fg.Row,  2 ) + " " + Filter.Fg.TextMatrix(Filter.Fg.Row,  3 ) + " " + Filter.Fg.TextMatrix(Filter.Fg.Row,  4 )
TableWord.Cell( 8 ,  1 ).Range.Text = Filter.Fg.TextMatrix(Filter.Fg.Row,  5 ) + " Êâ ¹" + Filter.Fg.TextMatrix(Filter.Fg.Row,  9 )
TableWord.Cell( 10 ,  2 ).Range.Text = MainForm.Label8 + " ã."

If Val(Label10) <>  0  Then
DocWord.Tables( 1 ).Rows.Add
TableWord.Cell( 14 ,  1 ).Range.Text = fg1.TextMatrix(fg1.Row,  1 )
TableWord.Cell( 14 ,  2 ).Range.Text = Dolg
End If

   
    
    With WordApp.ActiveDocument
        Set rng = .Paragraphs(.Paragraphs.Count).Range
        Set Tbl = .Tables( 1 )
    End With
    
       rng.ParagraphFormat.Alignment = wdAlignParagraphRight
       rng.InsertAfter NumStr(Dolg, True)
    
    Tbl.Range.Copy
    
    With rng
        .InsertParagraphAfter
        .InsertParagraphAfter
        .InsertParagraphAfter
        .InsertParagraphAfter
        .InsertParagraphAfter
        .Collapse Direction:=wdCollapseEnd
        .Paste
    End With
      
End Sub

В какой строке отловить не могу, т.к. у меня все работает, а на других компах нет VB. (хотя можно было поехать потратить время, установить, и проверить). Но там нет возможности долго сидеть и разбираться.
Надеюсь на помощь.
...
Рейтинг: 0 / 0
18.03.2006, 21:41:10
    #33610014
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из VB в Word -е скопировать таблицу
Файл Word
...
Рейтинг: 0 / 0
22.03.2006, 21:00:58
    #33618579
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из VB в Word -е скопировать таблицу
Код: plaintext
1.
2.
3.
4.
5.
Dim rng As Range
.
.
With WordApp.ActiveDocument
Set rng = .Paragraphs(.Paragraphs.Count).Range
Недопустимый тип Run time -13

Помогите.
...
Рейтинг: 0 / 0
22.03.2006, 21:11:29
    #33618590
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из VB в Word -е скопировать таблицу
Отвечаю сам себе
Код: plaintext
Dim rng As Word.Range
...
Рейтинг: 0 / 0
25.03.2006, 10:03:45
    #33624955
kminas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из VB в Word -е скопировать таблицу
А как скопировать таблицу из Word в AutoCAD? При копировании вставкой формат не выдерживается.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / из VB в Word -е скопировать таблицу / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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