18.07.2008, 15:48
общий
это ответ
Здравствуйте, Соколов В.В.!
Во первых за основу лучше брать не документ 1.doc, а шаблон 1.dot. Для этого документ сохраняется как шаблон.
Далее после расстановки данных по закладкам можно программным способом сохранить файл в любом месте:
x.SaveAs Filename:="c:\Path" + "Имя файла"& ".doc"
Самое интересное, чтобы редактировать данные используя форму, нужно откуда то загружать данные в форму. Брать из документа - недобно или сложно (не знаю как). Я для этих целей предлагаю хранить данные в свойствах документа !!
Если посмотреть Файл\Свойства\Прочие там можно сохранить различные данные, в том числе программным способом.
Не буду томить ожиданием кода, вот он.
В normal.dot создана форма с двумя полями (фамилия, имя) и двумя кнопками Вставить и Заменить.
Если вызвать форму, заполнить её и нажать заполнить: создастся документ на основе Документ.dot (в котором стоят закладки fam и name) заполняется данными из формы, сохраняется под именем "Фамилия.doc" в опред каталоге (C:\1\) и закрывается.
Если снова открыть этот файл и вызвать форму данные загрузятся в форму сами. По необходимости меняете данные и жмете Обновить.
Дерзайте
Приложение:
Option ExplicitDim x As Word.DocumentConst Path_saveRVK = "C:\1"Const Path_RVK = "Документ.dot"Dim PutFile As StringPrivate Sub CommandButton1_Click() Set x = Word.Documents.Add(Template:=Path_RVK, NewTemplate:=False, DocumentType:=0) With x.ActiveWindow.Selection .GoTo What:=wdGoToBookmark, Name:="name" .TypeText Text:=TextBox2.Value rename_comment "name", TextBox2.Value .GoTo What:=wdGoToBookmark, Name:="fam" .TypeText Text:=TextBox1.Value rename_comment "name", TextBox2.Value End With PutFile = Path_saveRVK + TextBox1.Value & ".doc" x.SaveAs FileName:=PutFile x.Close Set x = Nothing Unload Me End SubPrivate Sub rename_comment(pole As String, znach As String) Dim prop, priz As Boolean priz = FalseFor Each prop In x.CustomDocumentProperties If prop.Name = pole Then prop.Value = znach priz = True End IfNextIf Not priz Then x.CustomDocumentProperties.Add Name:=pole, LinkToContent:=False, Value:=znach, Type:=msoPropertyTypeStringEnd SubPrivate Sub CommandButton2_Click()Set x = ActiveDocument With x.ActiveWindow.Selection .GoTo What:=wdGoToBookmark, Name:="name" Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend Selection.Delete .TypeText Text:=TextBox2.Value & " " rename_comment "name", TextBox2.Value .GoTo What:=wdGoToBookmark, Name:="fam" Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend .TypeText Text:=TextBox1.Value & " " rename_comment "fam", TextBox1.Value End WithEnd SubPrivate Sub UserForm_Initialize()Dim propFor Each prop In ActiveDocument.CustomDocumentProperties Select Case prop.Name Case "fam" TextBox1.Value = prop.Value Case "name" TextBox2.Value = prop.Value End SelectNextEnd Sub