Консультация № 143044
04.09.2008, 12:05
0.00 руб.
0 1 1
Добрый день, Эксперты.

Данна программа. Шаблон документа. Через поля в форме, заполняется инфо и вставляются через закладки. Помимо этого, после создания документа, вся введенная информация сохраняется в "свойствах", и при открытие, созданного из шаблона, файла отображается в полях.

Вопрос в следующем. В программе представлены только 2 поля и 2 закладки соответственно. Но их гораздо больше. Тут проблема моего непонимания ситаксиса, как можно сделать цикл, что бы не писать присвоение для каждого поля-закладки!

Приложение:
Option Explicit

Dim x As Word.Document
Const Path_saveRVK = "C:\1"
Const Path_RVK = "C:\1\документ.dot"
Dim PutFile As String

Private Sub CommandButton1_Click()


Set x = Word.Documents.Add(Template:=Path_RVK, NewTemplate:=False, DocumentType:=0)
With x.ActiveWindow.Selection
.GoTo What:=wdGoToBookmark, Name:="l2"
.TypeText Text:=TextBox2.Value
rename_comment "l2", TextBox2.Value

.GoTo What:=wdGoToBookmark, Name:="l1"
.TypeText Text:=TextBox1.Value
rename_comment "l1", TextBox1.Value
End With
PutFile = Path_saveRVK + TextBox1.Value & ".doc"
x.SaveAs FileName:=PutFile

Set x = Nothing

Unload Me

End Sub


Private Sub rename_comment(pole As String, znach As String)
Dim prop, priz As Boolean
priz = False
For Each prop In x.CustomDocumentProperties
If prop.Name = pole Then
prop.Value = znach
priz = True
End If
Next
If Not priz Then x.CustomDocumentProperties.Add Name:=pole, LinkToContent:=False, Value:=znach, Type:=msoPropertyTypeString


End Sub

Private Sub CommandButton2_Click()
Set x = ActiveDocument
With x.ActiveWindow.Selection
.GoTo What:=wdGoToBookmark, Name:="l2"
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
Selection.Delete
.TypeText Text:=TextBox2.Value & " "
rename_comment "l2", TextBox2.Value

.GoTo What:=wdGoToBookmark, Name:="l1"
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
.TypeText Text:=TextBox1.Value & " "
rename_comment "l1", TextBox1.Value
End With

End Sub



Private Sub UserForm_Initialize()
Dim prop
For Each prop In ActiveDocument.CustomDocumentProperties
Select Case prop.Name
Case "l1"
TextBox1.Value = prop.Value
Case "l2"
TextBox2.Value = prop.Value
End Select
Next

End Sub

Обсуждение

Неизвестный
05.09.2008, 13:12
общий
это ответ
Здравствуйте, Соколов В.В.!
При условии, что все закладки имеют имя B1-B10, а Поля - TextBox1-TextBox10:



Приложение:
For i=1 to 10
.GoTo What:=wdGoToBookmark, Name:="B" & CStr(i)
.TypeText Text:=Me.Contros("TextBox" & CStr(i))).Text
rename_comment :="B" & CStr(i), Me.Contros("TextBox" & CStr(i))).Text
Next i
Форма ответа