VB и MS Word таблицы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kuguar
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 30.04.2005 (Сб) 10:23

VB и MS Word таблицы

Сообщение kuguar » 30.04.2005 (Сб) 10:36

Господа, если кто в курсе - просветите старика:
Задача - из VB закинуть в Word табличку примерно в 2500 строк
время выполнения 28 мину (Barton 2500, 512Mb)
Вопрос - как ускорить процесс, пробовал через буфер обмена - недостаточно эротично получается (параметры шрифта для ячеек уплывают + периодически меняется кодировка- понимая, что это бред но так и есть беру из MS FlexGrid, setclipboard, в Worde paste кодировка нафиг (Office 2003)),
Код: Выделить всё

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.04.2005 (Сб) 11:47

Узрим же код текущей версии :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

kuguar
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 30.04.2005 (Сб) 10:23

Сообщение kuguar » 11.05.2005 (Ср) 6:49

Private Sub ExpWord_Click()
Dim buf As String, Blank As String, i As Integer
Blank = "c:\Прайс_Бланк.doc"
Set objWord = New Word.Application
objWord.Visible = True

Set objDoc = objWord.Documents.Add(Blank)
objDoc.Activate
buf = Form1.Caption
objDoc.ActiveWindow.Selection.InsertParagraphAfter
objDoc.ActiveWindow.Selection.InsertAfter buf
objDoc.ActiveWindow.Selection.InsertParagraphAfter
objDoc.ActiveWindow.Selection.EndOf

objDoc.ActiveWindow.Selection.MoveDown wdLine, 3
objDoc.ActiveWindow.Selection.MoveLeft wdCharacter, 3

objWord.Visible = False
For i = 1 To MSFlexGrid.Rows - 1
With objDoc.ActiveWindow.Selection
.TypeText MSFlexGrid.TextMatrix(i, 1)
.MoveRight wdCharacter, 1
.TypeText MSFlexGrid.TextMatrix(i, 2)
.MoveRight wdCharacter, 1
.TypeText Trim(MSFlexGrid.TextMatrix(i, 3))
.MoveRight wdCharacter, 1
.TypeText MSFlexGrid.TextMatrix(i, 4)
.MoveRight wdCharacter, 1
.TypeText MSFlexGrid.TextMatrix(i, 5)
.MoveRight wdCharacter, 1
.TypeText Trim(MSFlexGrid.TextMatrix(i, 6))
.InsertRowsBelow (1)
End With
Next i
objWord.Visible = True
End Sub

Выглядит таким образом. (В Excel та же задача решается в течении 40 секунд)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 11.05.2005 (Ср) 17:02

Ы.
Документ хочу :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 12.05.2005 (Чт) 18:35

Эт тож самое, что и у меня. Wordовский документ из VB создается ОЧЕНЬ медленно, лучше писать RTF файл, а потом открывать его в Wordе
Весь мир матрица, а мы в нем потоки байтов!

kuguar
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 30.04.2005 (Сб) 10:23

Сообщение kuguar » 12.05.2005 (Чт) 23:17

С удовольствием бы, но в RTF теряются таблицы, а у меня бланк - отформатированная таблица, с колонтитулами и закрепленным заголовком таблицы

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 13.05.2005 (Пт) 9:58

kuguar писал(а):С удовольствием бы, но в RTF теряются таблицы, а у меня бланк - отформатированная таблица, с колонтитулами и закрепленным заголовком таблицы


Как вариант - в Excel (если результат нужно редактировать).

Причем непоячеечно, а экспортировать Recordset (это делается достаточно быстро), потом просто отформатировать полученное...

Если же полученное не нужно редактировать, то можно просто сбрасывать в PDF-файл - это самый простой вариант...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.05.2005 (Пт) 9:58

Закинь таблицу в ексель, а из него копи-пейстом в ворд. Или открой файл вордом.
Лучший способ понять что-то самому — объяснить это другому.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 14.05.2005 (Сб) 14:23

kuguar писал(а):С удовольствием бы, но в RTF теряются таблицы, а у меня бланк - отформатированная таблица, с колонтитулами и закрепленным заголовком таблицы


при желании, можно и в RTF документ таблицы ставить. Смотри формат RTFфайла на MSDN
Весь мир матрица, а мы в нем потоки байтов!

kuguar
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 30.04.2005 (Сб) 10:23

Сообщение kuguar » 15.05.2005 (Вс) 6:26

хорошо сказал:" Смотри формат RTFфайла на MSDN".
Для меня MSDN как Эльдорадо - много слышал никогда не видел.
Сколько не просил продавцов привезти - кроме обещаний ничего.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.05.2005 (Вс) 9:55

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

kuguar
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 30.04.2005 (Сб) 10:23

Сообщение kuguar » 16.05.2005 (Пн) 6:09

Что-ж, еще раз спасибо за толковое целеуказание


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 162

    TopList