1 1 1 1 1 1 1 1 1 1 Рейтинг 0.00 (0 голосов)

Акт списания. Автоматизация печати через Excel

 

 

Задачу которую будем решать, сформулируем следующим образом.

У вас есть список  в Excel  с данными, в нашем примере это порядковый номер, наименование оборудования и инвентарный номер, который подлежит списанию.

Вид исходных данных имеет вид, отображенный на рисунке.

 

 

список оборудования на списание

 

Нам необходимо для каждой строки из этого списка  распечатать акт списания оборудования.

Самый простой и трудоемкий процесс , это  в шаблон акта списания

 

 

акт на списание

в 8 строку  вписывать новые данные из исходного списка, потом распечатывать, потом опять вбивать данные, потом печать и так до тех пор, пока не психанете :)

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

Автоматизация

 

Переведем наш шаблон акта  в Excel и  запомним ячейки  которые нам нужно менять. На предыдущем рисунке они обведены.

Теперь  переходим в режим написания макроса

 

 

и вставляем код

 

Sub Макрос1()
Dim a As Range, b As Range
 
Set List = Selection
 
    For Each c In List.Rows
         Worksheets("Лист1").Range("B8").Value = c.Offset(0, 1).Value
         Worksheets("Лист1").Range("H8").Value = c.Offset(0, 2).Value
         Worksheets("Лист1").Range("A8").Value = c.Value
         Worksheets("Лист1").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
         
    Next
 
End Sub

Алогритм работы у него такой

1.Макросу передается в виде входных данных список выделенных ячеек

2. По каждой из строк в выделенном диапазоне, идет присвоение  новых значений в другой лист и другие ячейки

3. Распечатывается полученный результат

4. Повторение цикла на 2 пункт

 

Несложно заметить что Worksheets("Лист1").Range("B8").Value  это значение  ячейки B8  в нашем техническом акте на списание. То, что сам шаблон находится на первом листе Лист1, тоже не для кого не секрет.

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

c.Offset(0, 1).Value - это значение из выделенного диапазона, смещенного на 1 позицию справа.

Если мы посмотрим на исходный список оборудования, и примем, что мы выделили все три стролбца, то  значением  c.Offset(0, 1).Value будет наименование списанного оборудования.

Worksheets("Лист1").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False -Печатает полученную форму с новыми значениями.

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

 

 

 

Таким образом мы указали что наш макрос будет исполнятся при нажатии клавиш Ctrl+q

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

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

2. Идем пить чай :)

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

Удачи!