Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2016, 20:25   #1
АлександрТосно
Новичок
Джуниор
 
Регистрация: 31.10.2016
Сообщений: 1
По умолчанию Автозаполнение договоров

Всем добрый вечер!
прошу помощи, есть 4 документа шаблона Word с разными договорами и своим именем, есть таблица в Excel с нужными данными подставляемыми в свой договор.
необходимо чтобы при выполнении макроса, а именно выделяя нужную ячейку с тем именем, которым надо сохранить в формате .docx, но он сохраняет только то что я укажу:
FName = ob1.Cells(f_r, stb)
objDoc.SaveAs Filename:=path_f & "\Договор_" & FName

я бы хотел чтобы когда я хочу сохранить файл, то он бы сохранялся с именем документа (шаблона) с именем той выделенной ячейкой, а так же создавалась одноименная папка в нужном мне месте.

Sub Generator()
Dim ObWord As Word.Application
Dim objDoc As Word.Document
Dim file As String
Set ob1 = ActiveWorkbook.ActiveSheet ' теперь переменная ob1 будет содержать ссылку на текущий лист активной книги
f_r = Selection.Row ' определяем номер выбранной строки
stb = Selection.Column ' определяем номер выбранного столбца
f_c = Selection.CurrentRegion.Columns(Sel ection.CurrentRegion.Columns.Count) .Column ' определяем номер последнего столбца в данной таблице
path_f = ThisWorkbook.Path 'определяем текущую папку
file = Application.GetOpenFilename("Excel Files (*.docx;*.doc), *docx;*.doc") ' открывается диалоговое окно "Открытие документа"
If Dir(file) = Empty Then
Exit Sub
Else
' запускаем Word, открываем выбранный документ
Set ObjWord = CreateObject("Word.Application")
With ObjWord
.Visible = True
.Documents.Open Filename:=file
Set objDoc = .ActiveDocument
End With
With objDoc.Range
For j = 1 To f_c ' цикл по всем столбцам таблицы
isk_zn = ob1.Cells(1, j) 'искомое значение - находится в первой строке нашей таблицы
zamen_zn = ob1.Cells(f_r, j) 'значение для замены
.Find.ClearFormatting
.Find.Replacement.ClearFormatting
'осуществляем замену
With .Find
.Text = isk_zn
.Replacement.Text = zamen_zn
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
.Find.Execute Replace:=wdReplaceAll
Next j
' сохраняем документ в том же месте что и книга с макросом, имя документа - значение из выделенной ячейки
FName = ob1.Cells(f_r, stb)
objDoc.SaveAs Filename:=path_f & "\" & FName
objDoc.Close
ObjWord.Quit
End With
Set objDoc = Nothing
Set ObjWord = Nothing
ob1.Activate
End If
End Sub
Вложения
Тип файла: xlsx ДОГОВОРА.xlsx (11.5 Кб, 17 просмотров)
Тип файла: docx ДОГОВОР ПОДРЯДА 30% не более 700 т.р. пример.docx (26.6 Кб, 9 просмотров)
АлександрТосно вне форума Ответить с цитированием
Старый 03.11.2016, 00:44   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Посмотрите готовое решение
http://excelvba.ru/programmes/FillDocuments

В этой надстройке есть весь необходимый вам функционал.
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
оплата договоров АлексейСуров Microsoft Office Access 1 10.03.2013 01:07
БАза договоров Kukuska Microsoft Office Access 0 27.09.2012 15:00
Поквартальная разбивка сумм договоров swetikhoney Microsoft Office Excel 2 20.10.2011 16:04
Автоматизация договоров Romuald Microsoft Office Excel 15 20.04.2010 09:21
Автоматическая нумерация договоров, добавление контрагентов kitten2 Microsoft Office Word 1 22.12.2009 15:24