Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 28.12.2009
Сообщений: 3
1

Как поставить блокировку на прорисовку документа Word?

14.07.2010, 09:49. Показов 1470. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброе время суток!

Мне нужно, чтобы элементы в документе прорисовывались невидимо для пользователя. Т.е. изменения были видны сразу, а не появлялись постепенно. Какую функцию VBA для этого можно использовать?
Цикл заполнения шаблона документа такой:
Visual Basic
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
    For intLoopRow = 0 To intRows - 1
        'Создаем новый документ на основе шаблона
        Set Doc = Nothing
        If arrayRows(2, intLoopRow) = "Null" Or LCase(arrayRows(2, intLoopRow)) = "нет" Then
            Set Doc = ObjWord.Documents.Add(PathDOT & "\" & "СлужебнаяЗапискаДО.doc")
        Else
            Set Doc = ObjWord.Documents.Add(PathDOT & "\" & "Распоряжение.doc")
        End If
        ObjWord.Visible = True
        'Запрашиваем данные из базы
        rstOrgProduct.Open "select * from ows.Opt_EskRaspOrgProduct " _
        & "where feeYear = '" + CStr(arrayRows(3, intLoopRow)) + "' " _
        & "and orgNAME = '" + CStr(arrayRows(1, intLoopRow)) + "' " _
        & "and productNAME = '" + CStr(arrayRows(12, intLoopRow)) + "'", cnn
        'Находим число записей в наборе
        If Not rstOrgProduct.EOF Then
            rstOrgProduct.MoveFirst
            intRowsRst = 0
            Do While Not rstOrgProduct.EOF
                intRowsRst = intRowsRst + 1
                rstOrgProduct.MoveNext
            Loop
            rstOrgProduct.MoveFirst
            arrayRowsRst = rstOrgProduct.GetRows(intRowsRst)
        Else
            intRowsRst = 0
        End If
        'Вводим данные из массива в шаблон
        With Doc.Bookmarks
            .Item("OfficeCode").Range.Text = CStr(arrayRows(13, intLoopRow))
            .Item("RaspNumber").Range.Text = CStr(intRaspNumber)
            .Item("CurrDate").Range.Text = CStr(Date) + "г."
            .Item("Name").Range.Text = arrayRows(1, intLoopRow)
            Select Case CStr(arrayRowsRst(5, 0))
            Case 810
                strFeeType = "рублей 00 коп."
            Case 840
                strFeeType = "долларов 00 центов"
            Case 978
                strFeeType = "евро 00 евроцентов"
            End Select
            .Item("FeeYear").Range.Text = CStr(intRowsRst * CInt(arrayRows(3, intLoopRow))) + " " + strFeeType
            .Item("FeeYears").Range.Text = TextSum(intRowsRst * CInt(arrayRows(3, intLoopRow)), arrayRowsRst(5, 0))
            .Item("CardCount").Range.Text = intRowsRst
            .Item("Month1Day").Range.Text = CStr(Month1Day) + "г."
            If arrayRows(4, intLoopRow) <> "Null" Then
                .Item("NoteDoc").Range.Text = arrayRows(4, intLoopRow)
            Else
                .Item("NoteDoc").Range.Text = "RDF" '?What needs?
            End If
            If arrayRows(2, intLoopRow) = "Null" Or LCase(arrayRows(2, intLoopRow)) = "нет" Then
                If arrayRows(4, intLoopRow) <> "Null" Then
                    .Item("NoteDoc2").Range.Text = arrayRows(4, intLoopRow)
                Else
                    .Item("NoteDoc2").Range.Text = "RDF" '?What needs?
                End If
            Else
                .Item("BankAcc").Range.Text = "№ " & arrayRows(2, intLoopRow)
            End If
            .Item("FIO").Range.Text = strUserFIO
        End With
        'Переходим в конец документа
        Doc.ActiveWindow.Selection.EndKey Unit:=wdStory
        Doc.ActiveWindow.Selection.InsertBreak Type:=wdPageBreak
        'Записываем название организации
        Doc.ActiveWindow.Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
        Doc.ActiveWindow.Selection.TypeText Text:="Руководителю предприятия"
        Doc.ActiveWindow.Selection.TypeParagraph
        Doc.ActiveWindow.Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
        Doc.ActiveWindow.Selection.TypeText Text:= _
        "Списки сотрудников для безакцептного списания за обслуживание карт по зарплатной " _
        & "программе (Код - " + arrayRows(12, intOrg) + ") " + arrayRows(6, intOrg)
        Doc.ActiveWindow.Selection.EndKey Unit:=wdStory
        Doc.ActiveWindow.Selection.Font.Size = 10
        'Создаем пустую таблицу
        Set tblList = Doc.Tables.Add(Doc.ActiveWindow.Selection.Range, NumRows:=intRowsRst + 2, NumColumns:=4)
        With tblList
            If .Style <> "Сетка таблицы" Then
                .Style = "Сетка таблицы"
            End If
            .ApplyStyleHeadingRows = True
            .ApplyStyleLastRow = False
            .ApplyStyleFirstColumn = True
            .ApplyStyleLastColumn = False
            '.ApplyStyleRowBands = True
            '.ApplyStyleColumnBands = False
        End With
        tblList.Select
        'Заполнение таблицы
        intItog = 0
        tblList.Columns(1).Width = 45
        tblList.Columns(2).Width = 250
        tblList.Columns(3).Width = 100
        tblList.Columns(4).Width = 75
        tblList.Cell(1, 1).Range.InsertAfter "№ п/п"
        tblList.Cell(1, 2).Range.InsertAfter "ФИО"
        tblList.Cell(1, 3).Range.InsertAfter "Номер карты"
        tblList.Cell(1, 4).Range.InsertAfter "Комиссия"
        If intRowsRst <> 0 Then
                    For intRstOrgProduct = 0 To intRowsRst - 1
                        strClientName = CStr(arrayRowsRst(0, intRstOrgProduct)) + " " + CStr(arrayRowsRst(1, intRstOrgProduct))
                        If arrayRowsRst(2, intRstOrgProduct) <> "Null" Then
                            strClientName = strClientName + " " + CStr(arrayRowsRst(2, intRstOrgProduct))
                        End If
                        Select Case arrayRowsRst(5, intRstOrgProduct)
                        Case 810
                            strFeeType = "RUR"
                        Case 840
                            strFeeType = "USD"
                        Case 978
                            strFeeType = "EUR"
                        End Select
                        strFee = CStr(arrayRowsRst(4, intRstOrgProduct)) + ".00 " + strFeeType
                        tblList.Cell(intRstOrgProduct + 2, 1).Range.InsertAfter intRstOrgProduct + 1
                        tblList.Cell(intRstOrgProduct + 2, 2).Range.InsertAfter strClientName
                        tblList.Cell(intRstOrgProduct + 2, 3).Range.InsertAfter arrayRowsRst(3, intRstOrgProduct)
                        tblList.Cell(intRstOrgProduct + 2, 4).Range.InsertAfter strFee
                        intItog = intItog + CInt(arrayRowsRst(4, intRstOrgProduct))
                    Next
                    strItog = CStr(intItog) + ".00 " + strFeeType
                    tblList.Cell(intRstOrgProduct + 2, 2).Range.InsertAfter "Итого"
                    tblList.Cell(intRstOrgProduct + 2, 4).Range.InsertAfter strItog
        End If
        intOrg = intOrg + 1
        'Инкремент номера распоряжения
        intRaspNumber = intRaspNumber + 1
        'Закрываем набор данных
        rstOrgProduct.Close
        'Переходим в начало документа
        Doc.ActiveWindow.Selection.HomeKey Unit:=wdStory
        'задаем путь к конечному создаваемому каталогу
        strPathDir = "F:\CARD_FEE_YEARLY\" + CStr(Year(Date)) + "-" + CStr(Month(Date)) + "\"
        'проверяем, есть ли такой путь и если нету, вызываем процедуру
        'для создания соответствующих каталогов
        If Dir(strPathDir, vbDirectory) = "" Then
            Call MakeTreeDirectory(strPathDir)
        End If
        'Сохраняем документ
        strFileName = strPathDir + CStr(arrayRows(6, intLoopRow)) + " fee " + _
        CStr(arrayRows(3, intLoopRow)) + " prod " + CStr(arrayRows(12, intLoopRow)) + ".doc"
        Doc.SaveAs (strFileName)
        'Печать документа
        Doc.PrintOut
        Doc.Close wdSaveChanges
    Next
Добавлено через 1 час 12 минут
Ответ найден:
Visual Basic
1
2
3
Application.ScreenUpdating=False
...
Application.ScreenUpdating=True
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.07.2010, 09:49
Ответы с готовыми решениями:

Как отключить блокировку окон word при вызове формы
Добрый день! Может кто нибудь знает и сможет подсказать. Проблема такая, у меня есть макрос...

На оборотной стороне документа word в правой части документа, текст съезжает за границу документа
Добрый вечер. Есть код, который формирует документ из шаблона. И все вроде бы, но происходит что...

Поставить блокировку ввода букв с клавиатуры
+нужно поставить блокировку ввода букв с клавиатуры, и чтобы меню было в окне вывода помогите...

Как поставить курсор в начало в поле текстового документа?
как сделать чтоб курсор становился автоматом в начало а не туда куда ты поставишь?

0
14.07.2010, 09:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2010, 09:49
Помогаю со студенческими работами здесь

Заполнение документа Word несколько раз данными из другого документа
есть некий документ Word(test.docx). Нужно создать новый документ(test1.docx), и заполнить его...

Постраничная разбивка документа Word. Сохранение под разными именами.(данные из документа)
ТЗ: Сделать так чтобы данные из Excel перетягивались в Word, При этом файл ворд разбивался на 5...

Как вытащить текст из Word-документа?
Помогите: как в Дельфе вытащить текст из Word-документа?

Как запретить корректировку документа Word
Добрый день! Подскажите, пожалуйста, как запретить корректировку документа Word с помощью VBA. То...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru