Как сделать договор в excel
Перейти к содержимому

Как сделать договор в excel

  • автор:

Программа формирования договоров по шаблону

Скриншот программы формирования договоров купли-продажи

Программа предназначена для формирования (заполнения) договоров купли-продажи.

Исходными данными выступает таблица сделок, и шаблон договора, в который при помощи формул подставляются значения из заданной строки таблицы сделок.

Для запуска программы достаточно нажать зеленую кнопку — и сразу же начнётся формирование договоров (файлов Excel из одного листа) в автоматически созданной папке «Договоры купли-продажи»

Создаваемые документы получают имена файлов (и имена листов) согласно номеру договора из 8 столбца таблицы:

Договор КП № 1825.xls
Договор КП № 1820.xls
Договор КП № 1823.xls

Ознакомьтесь также с универсальной надстройкой формирования документов по шаблонам,
которая может делать всё тоже самое, что и эта программа,
только в качестве шаблонов могут выступать, помимо документов Word, ещё текстовые файлы, и книги Excel.

По вышеприведённой ссылке программа заполнения документов Word из Excel доступна для бесплатного скачивания.

Вы можете бесплатно пользоваться указанной программой (количество запусков ограничено), или активировать полнофункциональную версию этой программы на 48 часов.

В качестве параметров задаётся диапазон дат, для которого будет производиться формирование договоров.

Чтобы изменить введённую дату, достаточно щелкнуть в поле ввода даты в строке заголовка таблицы, — при этом появится календарь, который облегчает выбор, и позволяет избежать ошибок ввода:

Шаблон договора купли-продажи расположен на отдельном листе.

Все поля шаблона заполняются формулами, большая часть из которых задана через диспетчер имён.

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

В сведениях о пакете ЦБ использована пользовательская функция «Сумма прописью» для вывода текстового представления количества и стоимости ценных бумаг.

Для определения типа ценной бумаги (Облигация, Акция привилегированная, Акция обыкновенная именная, Опцион) применена пользовательская функция ТипЦБ:

Есть возможность также распечатать или просмотреть заполненный договор без формирования отдельного файла.

Для этого необходимо ввести номер строки интересующей записи в базе данных,
и на листе ШАБЛОН вы увидите договор, заполненный данными из выбранной строки

  • 79810 просмотров

Комментарии

Жека, 17 Ноя 2012 — 09:32. #1

Спасибо за ответ. Вот только у меня поставлено так, что вся вводимая информация поступает в БД из формочек.. там я сделал поля для дат заLoчил их и при двойном нажатии выскакивает календарь. И всё равно Вы мне помогли. Я вспомнил про маски для textbox-сов. Короче суть проблемы в том, что если ввести не существующую дату и сохранить данные формы, в последствии при дальнейшей работе с этими данными процессы будут слетать на пол пути.. и всё, туши свет выключай комп. Happy End! . можно конечно на даты перед сохранением проверять. но там столько этих форм и полей, что я чувствую, что в данном случае желание пользователя вне закона)))

Игорь (администратор сайта), 17 Ноя 2012 — 08:59. #2

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

PS: Даты куда удобнее вводить напрямую в ячейку без всяких календарей.
Просто вводите дату в формате DD-MM-YY (например, 12-07-50) на дополнительной цифровой клавиатуре.
Excel автоматически распознает данный текст как дату, и отобразит его в ячейке соответствии с региональными настройками (например, как 12.07.1950)

Жека, 17 Ноя 2012 — 07:37. #3

Здравствуйте, администратор сайта ExcelVBA.ru

Если вам известно, подскажите пожалуйста как в Элементе управления календарь 11, сделать раскрывающееся поле для года (там есть день, месяц, год), так вот с днём и месяцем порядок, а вот выпадающий список для выбора года, содержит всего 5 строчек для выбора. А часто нужно вписывать даты рождения типо 1950г. и очень неудобно там накручивать до нужного. В общем не могу узнать как сделать выпадающий список для выбора года в ЭУ Календарь 11 execel 2003 ДЛИННЕЕ.
Если вдруг у вас есть минутка, помогите. Зарание благодарен.

Как сделать договор в excel

Добрый день. Есть бланк договора с кучей пустых мест, которые нужно заполнять. Договоров приходится делать довольно много. Для удобства хотелось бы сделать некое всплывающее меню в котором будет таблица с нужными пунктами и пояснениями, где просто, к примеру напротив пункта «Ф.И.О.» пустая строчка, где ты заполняешь данные, нжимаешь кнопку ОК и выплывает тебе заполненны бланк договора, где в нужном месте прописано это Ф.И.О. и прочие реквизиты.
Думаю тем таких было достаточно, но поиск ничего подходящего не выдал, я наверное не умею искать.
Выкладываю относительно удобный пример, который нашел здесь на сайте. Только нужно, чтобы похожая форма после заполнения заполняла поля в вордовском документе в разных местах. Причем бывает так, что одно и тоже значение нужно заполнить в нескольких разных местах в документе

Прикрепленные файлы

  • post_278518.xls (51.5 КБ)

Пользователь
Сообщений: 4714 Регистрация: 22.12.2012
16.11.2011 12:29:50

Попробуйте поизучать в Word’e (справка, вызывается по F1) инструмент «Слияние». Погуглите еще. Думаю, поможет.

Кому решение нужно — тот пример и рисует.
Пользователь
Сообщений: 23813 Регистрация: 22.12.2012
16.11.2011 12:39:59

Было уже где-то на планете, но искал и не нашёл..

Dim sOM As String, sDocNum As String
Dim WordApp As Object

sOM = «G:\0. Шаблоны\Постановление.doc»
xData = Range(«A1»).Value
xFIO = Range(«A2»).Value
xS = Range(«A3»).Value
xAdr = Range(«A4»).Value
xVidIs = Range(«A5»).Value

‘sOM = Range(«B9»).Value
‘sDocNum = Range(«B11»).Value
On Error Resume Next
Set WordApp = GetObject(, «word.application»)
If WordApp Is Nothing Then
Set WordApp = CreateObject(«word.application»)
End If
On Error GoTo 0
With WordApp
.Visible = True
.Documents.Open Filename:=sOM
End With
WordApp.ActiveDocument.Bookmarks(«vData»).Range.Text = xData
WordApp.ActiveDocument.Bookmarks(«vFIO»).Range.Text = xFIO
WordApp.ActiveDocument.Bookmarks(«vS»).Range.Text = xS
WordApp.ActiveDocument.Bookmarks(«vAdr»).Range.Text = xAdr
WordApp.ActiveDocument.Bookmarks(«vVidIs»).Range.Text = xVidIs
Set WordApp = Nothing

Код берет из Excel данные ячеек и вставляет их в закладки в Word.

Автозаполнение договоров и типовых документов

Деятельность любой организации связана с договорной работой. Важна рациональность организации документооборота в рабочих процессах. В договорах меняются одни и те же поля: реквизиты клиентов, суммы, даты, номера и тд., нужно пролистать договор и подставить нужные данные в правильном формате в нужные места.Такой способ затратный и допускает высокую вероятность ошибки

Мы же рассмотрим простой и безотказный способ быстрого заполнения документов, который может сделать каждый.

НОВЫЙ ПРОЕКТ ОТ РАЗРАБОТЧИКОВ HELPEXCEL

В рамках данного кейса будем использовать Гугл Таблицы — инструмент, который позволяет работать одновременно группе лиц с разграничением прав доступа.

В рамках данного кейса будем использовать Гугл Таблицы — инструмент, который позволяет работать одновременно группе лиц с разграничением прав доступа.

Будем оптимизировать работу с договором на оказание услуг
(изменяемые поля выделены желтым).

автозаполнение договоров

В качестве изменяемых полей будут значения из нижеприведенной таблицы 1:

автоматически заполнять договора

Создаем папку «Договора» и в ней создаем таблицу с названием «Шаблон» и «Реестр» ( кликните на выделенные слова «шаблон» и «реестр», чтобы перейти по ссылке в таблицы)

реестр

На первом листе таблицы «Реестр» создаем таблицу с полями:

таблица реестра

Заходим в таблицу «Шаблон» и на первом листе создаем форму ввода данных. Просто рисуем и форматируем ячейки так, как будет удобно. Далее значения из нашей формы будут подставляться в шаблон договора.

параметры договора

Далее в таблице «Шаблон» создаем лист «Договор» и переносим туда содержимое договора.
Изменяемые поля размещаем в отдельных ячейках и временно выделяем для удобства желтым цветом.

содержимое договора

Перенос содержимого договора в таблицу займет большую часть времени. Нужно отнестись к этой задаче внимательно и предусмотрительно. Поскольку некоторые поля могут существенно меняться в размерах от случая к случаю, то лучше рассчитать под них поле соответствующего размера.
Можно объединять ячейки:

шаблон договора

А так же применять инструменты для выравнивания текста:

выравнивание текста

И инструменты для форматирования:

инструменты для форматирования в гугл таблицах

Теперь самое главное!
Сперва определим алгоритм документооборота:
У нас есть таблица «Реестр», в ней в каждой строке содержатся данные для одного договора. Пользователь заполняет таблицу реестра:

заполнение реестра

И открывает ее.
В копии заполняется только поле «Номер договора». Данные автоматически подставляются в соответствующие места договора.

шаблон договора

Далее создает копию шаблона:

заполняем номер договора

Приступаем к самому важному…

Приступаем к самому важному…

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

Функция отображает данные одной таблицы в любой другой.
В качестве аргументов задается ссылка на таблицу и диапазон отображаемых ячеек, информация отображается без форматирования.

Вид функции: IMPORTRANGE(«ссылка на таблицу»; «диапазон»)

Обязательно нужно заключать в кавычки каждый из аргументов!

Переходим на лист «Реестр» в таблице «Шаблон». Встаем курсором на ячейку А1 и вводим следующую формулу:
=importrange(«https://docs.google.com/s..»;»Реестр!B:O»)
Получаем массив данных реестра:

importrange

Далее с помощью функции ВПР будем подтягивать по номеру договору, который введет пользователь, данные реестра.

Вид функции: =ВПР(Искомое значение; диапазон в котором осуществляется поиск; номер столбца из которого возвращается значение; точность совпадений (в 99,99% случаев указываем «0» (нуль))

На листе «Данные» встаем на ячейку С4 и вводим формулу:
=ВПР( C3 ;’ Реестр ‘! A : N ; 2 ; 0 )

В ячейке С4 появится значение:

номер договора, стоимость работ, срок выполнения

Н/Д – нет данных. Значение отображается потому что в таблице не найдено пустого значения. Что бы все было красиво и без ошибок включим формулу ЕСЛИОШИБКА
Вид функции: = ЕСЛИОШИБКА (Значение если нет ошибка; Значение если ошибка)
Таким образом наша формула примет следующий вид:
=ЕСЛИОШИБКА(ВПР( C3 ;’ Реестр ‘! A : N ; 2 ; 0 );»»)

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

функция ЕСЛИОШИБКА

Теперь введем номер одного из имеющихся в реестре договоров и получим заполненную форму:

заполненная форма в реестре

Теперь осталось подставить полученные данные в шаблон договора.
В ячейке для номера договора вводим формулу: = ‘Данные’!C3
Таким образом ссылаемся на соответствующее поле на листе «Данные».
В поле даты договора вводим формулу: =СЕГОДНЯ()
В шаблоне всегда будет фигурировать текущая дата.
В ячейку юридического статуса вводим формулу: = ‘Данные’!C8
А вот ячейка для ФИО состоит из трех полей на листе «Данные». Поэтому воспользуемся простой текстовой функцией СЦЕПИТЬ и получим такую формулу:

=СЦЕПИТЬ( ‘Данные’!C11 ;» «; ‘Данные’!C12 ;» «; ‘Данные’!C13 )

функция СЦЕПИТЬ

Следующее поле, которое нужно заполнить – это сумма договора.
Вводим формулу: =’Данные’!C4

В соседнем поле нужно вывести сумму прописью. Поскольку стандартным функционалом Гугл Таблиц не это не предусмотрено, воспользуемся готовым решением.

Заходим в редактор скриптов:

И вставляем фрагмент нижеприведенного кода:

var mapNumbers = <
0 : [2, 1, «ноль»],
1 : [0, 2, «один», «одна»],
2 : [1, 2, «два», «две»],
3 : [1, 1, «три»],
4 : [1, 1, «четыре»],
5 : [2, 1, «пять»],
6 : [2, 1, «шесть»],
7 : [2, 1, «семь»],
8 : [2, 1, «восемь»],
9 : [2, 1, «девять»],
10 : [2, 1, «десять»],
11 : [2, 1, «одиннадцать»],
12 : [2, 1, «двенадцать»],
13 : [2, 1, «тринадцать»],
14 : [2, 1, «четырнадцать»],
15 : [2, 1, «пятнадцать»],
16 : [2, 1, «шестнадцать»],
17 : [2, 1, «семнадцать»],
18 : [2, 1, «восемнадцать»],
19 : [2, 1, «девятнадцать»],
20 : [2, 1, «двадцать»],
30 : [2, 1, «тридцать»],
40 : [2, 1, «сорок»],
50 : [2, 1, «пятьдесят»],
60 : [2, 1, «шестьдесят»],
70 : [2, 1, «семьдесят»],
80 : [2, 1, «восемьдесят»],
90 : [2, 1, «девяносто»],
100 : [2, 1, «сто»],
200 : [2, 1, «двести»],
300 : [2, 1, «триста»],
400 : [2, 1, «четыреста»],
500 : [2, 1, «пятьсот»],
600 : [2, 1, «шестьсот»],
700 : [2, 1, «семьсот»],
800 : [2, 1, «восемьсот»],
900 : [2, 1, «девятьсот»]
>;
var mapOrders = [
< _Gender : true, _arrStates : ["рубль", "рубля", "рублей"] >,
< _Gender : false, _arrStates : ["тысяча", "тысячи", "тысяч"] >,
< _Gender : true, _arrStates : ["миллион", "миллиона", "миллионов"] >,
< _Gender : true, _arrStates : ["миллиард", "миллиарда", "миллиардов"],
< _Gender : true, _arrStates : ["триллион", "триллиона", "триллионов"] >];
var objKop = < _Gender : false, _arrStates : ["копейка", "копейки", "копеек"] >;
function Value(dVal, bGender) <
var xVal = mapNumbers[dVal];
if (xVal[1] == 1) <
return xVal[2];
> else <
return xVal[2 + (bGender ? 0 : 1)];
>
>
function From0To999(fValue, oObjDesc, fnAddNum, fnAddDesc)
< var nCurrState = 2;
if (Math.floor(fValue/100) > 0) <
var fCurr = Math.floor(fValue/100)*100;
fnAddNum(Value(fCurr, oObjDesc._Gender));
nCurrState = mapNumbers[fCurr][0];
fValue -= fCurr;
>
if (fValue < 20) <
if (Math.floor(fValue) > 0) <
fnAddNum(Value(fValue, oObjDesc._Gender));
nCurrState = mapNumbers[fValue][0];
>
> else <
var fCurr = Math.floor(fValue/10)*10;
fnAddNum(Value(fCurr, oObjDesc._Gender));
nCurrState = mapNumbers[fCurr][0];
fValue -= fCurr;
if (Math.floor(fValue) > 0) <
fnAddNum(Value(fValue, oObjDesc._Gender));
nCurrState = mapNumbers[fValue][0];
>
>
fnAddDesc(oObjDesc._arrStates[nCurrState]);
>
function FloatToSamplesInWordsRus(fAmount)
<
var fInt = Math.floor(fAmount + 0.005);
var fDec = Math.floor(((fAmount — fInt) * 100) + 0.5);
var arrRet = [];
var iOrder = 0;
var arrThousands = [];
for (; fInt > 0.9999; fInt/=1000) <
arrThousands.push(Math.floor(fInt % 1000));
>
if (arrThousands.length == 0) <
arrThousands.push(0);
>
function PushToRes(strVal) <
arrRet.push(strVal); >
for (var iSouth = arrThousands.length-1; iSouth >= 0; —iSouth) <
if (arrThousands[iSouth] == 0) continue;
>
From0To999(arrThousands[iSouth], mapOrders[iSouth], PushToRes, PushToRes); >
if (arrThousands[0] == 0) <
// Handle zero amount
if (arrThousands.length == 1) <
PushToRes(Value(0, mapOrders[0]._Gender)); >
var nCurrState = 2;
PushToRes(mapOrders[0]._arrStates[nCurrState]);
>
if (arrRet.length > 0) <
// Capitalize first letter
arrRet[0] = arrRet[0].match(/^(.)/)[1].toLocaleUpperCase() + arrRet[0].match(/^.(.*)$/)[1]; >
arrRet.push((fDec < 10) ? ("0" + fDec) : ("" + fDec));
From0To999(fDec, objKop, function() <>, PushToRes);
return arrRet.join(» «);
>

Далее сохраняем и задаем название проекта:

Чтобы перевести числовую сумму в текстовый эквивалент, необходимо в таблице воспользоваться функцией =FloatToSamplesInWordsRus() и в скобках указать адрес ячейки, в которой у нас хранится числовая сумма.
Введем формулу со ссылкой на сумму:

=FloatToSamplesInWordsRus( A57 )
Получим искомое значение:

Дальше прописываем формулы для реквизитов:

Поле наименование содержит данные из двух ячеек формы: юридический статус и наименование.
Поле «юридический статус» в реквизитах нам нужно указать в формате сокращенной аббревиатуры, поэтому предусмотрим все возможные вариации на листе «Данные» и воспользуемся логической функцией ЕСЛИ

Функция ЕСЛИ проверяет ячейку на совпадение с задаваемыми условиями и возвращает одно значение в случае совпадения и другое в противном случае.
Вид функции: =ЕСЛИ(условие; значение если истина; значение если ложь)
В нашем случае функция будет иметь следующий вид:
=ЕСЛИ( C8 = «ИП» ; «ИП» ;ЕСЛИ( C8 = «общество с ограниченной ответственностью» ; «ООО» ; C8 ))

Вставим ее рядом с полем «Юридический статус» на листе «Данные»:

Программа формирования договоров в Word из таблицы Excel

Шаблон договора в Word, заполняемого макросом из Excel

Программа предназначена для автоматизации формирования договоров комиссии и купли автотранспортного средства.

В качестве исходных данных выступают:

  • таблица Excel с реквизитами создаваемых документов
  • папка с шаблонами договоров (в формате dot)

В исходной таблице Excel занесены все необходимые исходные данные для заполнения бланков договоров, а также, при помощи пользовательских формул (UDF), сформированы дополнительные текстовые поля
(такие, как сумма прописью и дата прописью, фамилия и инициалы в творительном падеже, сокращённая запись ФИО и т.п.)

При нажатии кнопки запуска происходит:

  • создание папки РЕЗУЛЬТАТ, в которую будут помещаться сформированные договоры
  • создание документов на основании шаблонов из специальной папки (обрабатываются все шаблоны dot, имеющиеся в папке)
  • заполнение полей в созданных файлах Word данными из соответствующих полей таблицы Excel

Программа формирует (заполняет) такие документы, как:

  • договор комиссии автотранспортного средства
  • акт приёма-передачи наличных денежных средств
  • договор купли-продажи
  • и т.д. и т.п.

Эта программа послужила прототипом для универсальной надстройки для формирования документов по шаблонам,
которая может делать всё тоже самое, что и эта программа, только в качестве шаблонов могут выступать, помимо документов Word, ещё текстовые файлы, и книги Excel.

По вышеприведённой ссылке программа заполнения документов Word из Excel доступна для бесплатного скачивания.

Вы можете бесплатно пользоваться указанной программой в течение 5 дней, после чего можно приобрести программу за 1600 руб

Данные в исходной таблице могут быть расположены как в строках, так и в столбцах (пример вертикальной исходной таблицы)

В отдельной строке (или столбце) располагаются названия полей, соответствующих рядом расположенным данным,
что позволяет пользователю легко изменять (дополнять) список заполняемы полей в документах Word

  • 55147 просмотров

Комментарии

Игорь (администратор сайта), 15 Сен 2015 — 22:42. #1

Эта программа уже давно неактуальна, — все её возможности присутствуют в универсальном решении
http://excelvba.ru/programmes/FillDocuments
Искодный код закрыт (но и смысла нет в нем копаться, если все можно настроить через интерфейс программы)

Гость, 15 Сен 2015 — 18:34. #2

Добрый день! Сколько стоит такая программа с открытыми кодами?

Андрей, 14 Окт 2014 — 16:01. #3

Используем вашу программу, очень нравиться. А вот вопрос. Подскажите, возможно ли сделать программу так, чтобы формировать документы по одной маске, но с разных компьютеров? Просто сейчас при общем доступе к exel, файлу, включать формирование документов можно только с одного компьютера. Желательно сделать доступ к формированию документов с 4 компьютеров одновременно. Заранее благодарю.

Отправить комментарий

НАДСТРОЙКИ ДЛЯ EXCEL

© 2009-2023 Игорь Вахненко

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *