Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Печать в Word.


Автор: ИгнатьевАлексей 31.7.2020, 17:54
Друзья, прошу подсказки!

Выполняю вывод информации в Word. Предложения записываю примерно так:
1. Несколько слов жирными,
2. число,
3. несколько слов обычными,
4. перенос на другую строку
и т.д.

Процедура, которая вводит фразу:
Код

Sub InsertText(ByRef str As String, ByRef objWrdDoc As Word.Document, ByRef isBold As Boolean, ByRef Align As String, _
                ByRef Level As String, ByVal Space As Integer)
    objWrdDoc.Range.InsertAfter str
    objWrdDoc.Range(Start:=objWrdDoc.Characters.Count - Len(str) - 1, _
            End:=objWrdDoc.Characters.Count - 1).Bold = isBold
            
    If InStr(str, "<") <> 0 Then
        objWrdDoc.Range(Start:=objWrdDoc.Characters.Count - Len(str) - 1, _
            End:=objWrdDoc.Characters.Count - 1).Font.Color = wdColorRed
    Else
        objWrdDoc.Range(Start:=objWrdDoc.Characters.Count - Len(str) - 1, _
            End:=objWrdDoc.Characters.Count - 1).Font.Color = wdColorBlack
    End If
            
    objWrdDoc.Paragraphs(objWrdDoc.Paragraphs.Count).Alignment = Align
    objWrdDoc.Paragraphs(objWrdDoc.Paragraphs.Count).OutlineLevel = Level
    
    'If Space > 0 Then
        objWrdDoc.Paragraphs(objWrdDoc.Paragraphs.Count).Format.SpaceBefore = Space
        objWrdDoc.Paragraphs(objWrdDoc.Paragraphs.Count).Format.SpaceAfter = Space
    'End If
End Sub


Все идет нормально, но документ большой. Вывод на глазах замедляется и замедляется.
Почему происходит такое замедление?
Что можно сделать, чтобы его исключить?

Автор: Akina 1.8.2020, 16:27
Брось на форму RTFTextbox, собери всё в нём, потом вставляй крупными блоками.

А тормозит скорее всего из-за накопления UNDO.

Автор: ИгнатьевАлексей 7.8.2020, 18:47
Akina
Подскажите, а если UndoClear не помогает, то, значит, тормозит по другой причине? Или я наивен, что так просто хотел решить проблему?

Автор: ИгнатьевАлексей 8.8.2020, 16:48
Печатаю во временный файл Ворда. Затем кусок копирую в основной файл.

Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)