Печать в excel с подстановкой новых значений

Здравствуйте, подскажите пожайлуста можно ли в екселе реализовать такую штуку……
есть Лист 1 на котром меняется только одна ячейка-номер телефона остальная информация не меняется вообще, на Лист2 есть таблица со списком номеров……

можно ли как нибудь сделать так, чтобы при распечатке каждый раз значение в ячейке с номером телефона менялось на следующее ?????? а еще лучше , чтобы он сам печатал каждый раз подставляя следующий номер телефона пока не дойдет до последней записи на Листе2


ну хотя бы чтобы не копировать постоянно номер с той страницы а при нажатии на кнопку ,номер сам менялся на следующий , может макрос какой можно сделать а ctrl+p сама нажму …


При отправке на печать (любым способом с любого листа) из вложения, распечатается полсотни бланков с разными номерами телефонов.

Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли


  • Профессиональные приемы работы в Microsoft Excel

  • Обмен опытом

  • Microsoft Excel

  • Печать в excel с подстановкой новых значений

 

hommeLibre

Пользователь

Сообщений: 3
Регистрация: 03.11.2014

Всем привет)
Появилась задача распечатать много одинаковых бланков, но с разными значениями.
Для удобства сверстал этот бланк в экселе, а на другом листе у меня табличка со значениями которые нужно вставить.

Хочется чтобы при печати эти значения автоматически подставлялись в бланк.
Не подскажете, как это сделать?
Спасибо.

 

Добрый вечер
Файл покажите

 

hommeLibre

Пользователь

Сообщений: 3
Регистрация: 03.11.2014

 

hommeLibre

Пользователь

Сообщений: 3
Регистрация: 03.11.2014

#4

03.11.2014 21:07:58

Чуть-чуть почитал, подумал) написал свой первый макрос)
Всем спасибо))

Код
Dim i As Integer
For i = 5 To 6 Step 1
    Rows(i & ":" & i).Select
    Selection.Copy
    Rows("2:2") .Select
    ActiveSheet.Paste
    Sheets("Лист1").PrintOut Copies:=1, Collate:=True
Next i
    
End Sub

Изменено: hommeLibre04.11.2014 10:26:52

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#5

04.11.2014 10:21:00

hommeLibre, можно укоротить копирование:

Код
Rows(i & ":" & i).Copy Rows("2:2")

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Юрий М

Модератор

Сообщений: 60586
Регистрация: 14.09.2012

Контакты см. в профиле

#6

04.11.2014 10:50:33

Конечно можно укоротить))

Код
Dim i As Integer
    For i = 5 To 6
        Rows(i).Copy Rows(2)
        Sheets("Лист1").PrintOut Copies:=1, Collate:=True
    Next

Массовая печать листа с заменой данных

strike14

Дата: Четверг, 06.06.2013, 16:02 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 1


Репутация:

0

±

Замечаний:
0% ±


Здравствуйте.
Есть:
документ из двух листов
в первый вставлены данные из второго.
надо автоматически распечатывать первый лист с автоматической заменой данных из второго листа, но строчкой ниже

К сообщению приложен файл:

6660919.xlsx
(14.0 Kb)

 

Ответить

RAN

Дата: Четверг, 06.06.2013, 18:51 |
Сообщение № 2

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Для этих целей в Word’e есть прекрасный инструмент — слияние.


Быть или не быть, вот в чем загвоздка!

 

Ответить

Wasilich

Дата: Четверг, 06.06.2013, 19:50 |
Сообщение № 3

Группа: Друзья

Ранг: Старожил

Сообщений: 1232


Репутация:

326

±

Замечаний:
0% ±


2003

Цитата (strike14)

надо автоматически распечатывать первый лист с автоматической заменой данных из второго листа, но строчкой ниже

Если надо, то можно. Макросом.

 

Ответить

Hugo

Дата: Четверг, 06.06.2013, 20:30 |
Сообщение № 4

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3140


Репутация:

670

±

Замечаний:
0% ±


2010, теперь уже с PQ

Уж сколько таких печатей было…
Тут не хватает порядкового номера строк, и ВПР() по этому номеру во все поля.
Далее хоть макросом цикл по номерам и печать, хоть вручную выбираем номер из выпадающего списка и печатаем.
ФИО не годятся потому, что Иванов И.И не один на свете.


excel@nxt.ru
webmoney: R418926282008 Z422237915069

 

Ответить

Wasilich

Дата: Четверг, 06.06.2013, 21:11 |
Сообщение № 5

Группа: Друзья

Ранг: Старожил

Сообщений: 1232


Репутация:

326

±

Замечаний:
0% ±


2003

Цитата (Hugo)

Тут не хватает порядкового номера строк, и ВПР() по этому номеру во все поля.

Макрос и ДВССЫЛ() в 1-й строке адресов.
Ну а вариантов — хоть циклом, хоть кнопкой.

К сообщению приложен файл:

strike14.xls
(47.0 Kb)

 

Ответить

Печатаем график работы для списка сотрудников на выбранную дату

Введение

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

Скорее всего, приметесь фильтровать данные по сотруднику и дате, после выделять этот диапазон и отправлять на печать. И так по каждому сотруднику. И так за каждый день. Представили? Да, выходит довольно рутинная задачка. Как избавиться от рутины данной ситуации, мы и поговорим далее.

Скачать файл из этой статьи

Рабочий файл

Обзорное видео смотрите ниже. Приятного просмотра!

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

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

Исходные данные

Имеется таблица, где формируется рабочий график.

Исходные данные

График работы магазина с 10:00 до 22:00. В столбцах:

А – даты

В – операции

С – сотрудники

D-AB – занятость в минутах (интервал 30 минут)

AC – общая загруженность в % (8 часов — 100%). Рассчитывается как сумма занятости по операции деленная на 480

AD – общая загруженность в часах (8 часов — максимальная загруженность). Рассчитывается как сумма занятости по операции деленная на 60

Приводим лист к нужному виду

Первым делом сделаем из нашего диапазона «умную» таблицу Excel. Делается это сочетанием клавиш Ctrl+T.

Преобразуем диапазон в «умную» таблицу

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

Пример растягивающегося диапазона

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

Вставка -> Сводная таблица -> На новый лист

Поля сводной таблицы на рисунке ниже.

Поля сводной таблицы

Результат сводной таблицы:

Результат сводной таблицы

Далее вкладка «Анализ» -> Сводная диаграмма

Выбираем обычную гистограмму.

Сводная диаграмма

Настроим ее форматирование на свой вкус и перенесем на лист рядом с рабочим графиком.

Отформатированная сводная диаграмма

Такая диаграмма позволяет оперативно отслеживать загруженность сотрудников за день.

Справа от гистограммы создаем список сотрудников. В ячейке AQ2 прописываем формулу =ЕСЛИ(AR2=ИСТИНА;1;0) и копируем ее на ячейки ниже. Форматированием скрываем видимость результата в столбце AQ (устанавливаем белый цвет шрифта).

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

Список сотрудников и шаблон для выбора дат

Флажки связываем со столбцом AR.

Формат элемента управления

Из списка сотрудников создаем выпадающие списки в «умной» таблице (для удобства заполнения).

Настраиваем выпадающий список сотрудников

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

Шаблон для выбора дат

Из списка имеющихся дат создаем именованный диапазон с именем «Исходный».

Именованный диапазон «Исходный»

Далее добавляем новый столбец перед столбцом с датами, назовем его «Уникальные даты» и добавим в диапазон таблицы.

Изменение размера таблицы

В ячейку А2 вставляем формулу массива: =ЕСЛИОШИБКА(ИНДЕКС(Исходный;ПОИСКПОЗ(СУММ(СЧЁТЕСЛИ(A$1:A1; Исходный));СЧЁТЕСЛИ(Исходный;"<"& Исходный);0));"")

Формула массива

Копируем формулу на ячейки ниже и задаем формат «Дата».

Копируем формулу на ячейки ниже и задаем формат «Дата»

Далее создаем именованный диапазон:

Имя: «Даты»

Диапазон: =СМЕЩ('График рабочих смен'!$A$2;0;0;СЧЁТЗ(Таблица1[Уникальные даты])-СЧИТАТЬПУСТОТЫ(Таблица1[Уникальные даты]))

Новый именованный диапазон «Даты»

Полученный именованный диапазон «Даты» используем в качестве источника для списка в столбцах AT.

Проверка вводимых значений

Настраиваем подсказку по вводу:

Подсказка по вводу

Скрываем столбец А. В целом все готово для автоматизации печати.

Лист «График рабочих смен» подготовлен

Сохраняем книгу как файл с поддержкой макросов (xlsm).

Книга Excel с поддержкой макросов (.xlsm)

Сочетанием клавиш Alt+F11 попадаем в окно Visual Basic.

окно Visual Basic

Создаем два новых модуля: Insert – Module

Два новых модуля

В первый модуль вставляем код:

Public Sub Filter()
    'Проверяем что сотрудник и дата для печати выбраны'
        If Application.Sum(Range("AR2:AR13")) = 0 Or Application.Sum(Range("AT2:AT8")) = 0 Then
            MsgBox ("Выберите сотрудника и дату")
        Else
            'Цикл пробегающий по списку сотрудников'
            For s = 2 To 14 Step 1
                'Условие для выбора сотрудника'
                If Range("AR" + CStr(s)) = 1 Then
                    Set tbl = [A1].CurrentRegion
                    tbl.AutoFilter Field:=4, Criteria1:=Range("AQ" + CStr(s))
                    'Подсчет указанных дат'
                     ndate = Application.WorksheetFunction.CountA(Columns(46)) - 1
                    'Цикл пробегающий по всем датам'
                    For i = 1 To ndate Step 1
                        Set tbl = [A1].CurrentRegion
                        tbl.AutoFilter Field:=2, Criteria1:="=" & Format(Range("AT" + CStr(2 + i - 1)), "dd.mm.yy")
                        'Определяем последнюю видимую строку в фильтре по столбцу с фамилией сотрудника'
                        LastRow = ActiveSheet.Cells(1, 4).SpecialCells(xlLastCell).Row
                        'Проверяем наличие графика на протяжении всего кода'
                            If LastRow = 1 Then
                                MsgBox ("Рабочий график отсутствует")
                            Else
                            'Копируем таблицу'
                            Range(Cells(1, 2), Cells(LastRow, 31)).Select
                            Selection.Copy
                            'Создаем новую книгу'
                            Workbooks.Add
                            'Вставляем таблицу в ячейку A5'
                            Range("A5").Select
                            ActiveSheet.Paste
                            'Добавляем основную информацию'
                            Application.ScreenUpdating = False
                            Range("A1").FormulaR1C1 = "Дата"
                            Range("A2").FormulaR1C1 = "Сотрудник"
                            Range("A3").FormulaR1C1 = "Время"
                            Range("B1").FormulaR1C1 = "=R[5]C[-1]"
                            Range("B2").FormulaR1C1 = "=R[4]C[1]"
                            Range("B1:B2").Select
                            Selection.Copy
                            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                :=False, Transpose:=False
                            Application.CutCopyMode = False
                            Application.ScreenUpdating = True
                            'Считаем количество непустых столбцов'
                            a = 1
                                For c = 4 To 28 Step 1
                                    If Application.Sum(Range(Cells(6, c), Cells(25, c))) <> 0 Then
                                    a = a + 1
                                    End If
                                Next c
                            a = a - 1 'Убираем лишнюю исходную a'
                                'Цикл пробегающий по всему времени от 4 столбца до 4+CountCell'
                                For y = 4 To a + 4 Step 1
                                'Подсчет корректности графика во времени'
                                n = Application.WorksheetFunction.CountA(Columns(y))
                                    If n = 1 Then
                                        Columns(y).Delete
                                        y = y - 1
                                    End If
                                Next y

                            'Указываем итоговое рабочее время'
                            Range("B3") = Cells(5, 4)
                            Range("C3") = Cells(5, 3 + a)
                            Range("B3:C3").Select
                            Selection.Copy
                            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                :=False, Transpose:=False
                            Application.CutCopyMode = False
                                'Проверяем наличие загруженности'
                                If Range("B3") = "Общая загруженность (%)" Or Range("C3") = "Операция" Then
                                    Range("B3") = "Без загрузки"
                                    Range("C3").ClearContents
                                End If
                            'Подбираем автоматически ширину для столбцов'
                            Columns("A:AJ").EntireColumn.AutoFit
                            'Запускаем макрос сортировки'
                            Call Sort
                            'номер последнего столбца'
                            lastCol = Cells(6, Columns.Count).End(xlToLeft).Column

                            'номер последней строки'
                            LastRow = Cells(Rows.Count, lastCol).End(xlUp).Row

                            'Подсчитываем, сколько строк должно остаться'
                            ActiveSheet.Range(Cells(6, lastCol), Cells(LastRow, lastCol)).Select
                            CountRow = WorksheetFunction.CountIf(Range(Cells(6, lastCol), Cells(LastRow, lastCol)), "<>0")

                            'Удаляем лишние строки (где Общая загруженность (%) = 0)'
                                For Q = 6 To 6 + CountRow Step 1
                                    If Cells(Q, lastCol) = 0 Then
                                        Rows(Q).Delete
                                        'Если все лишние нули удалены, то останавливаем цикл'
                                        If CountRowlastCol = CountRow Then
                                            Q = 6 + CountRow
                                        Else
                                        Q = Q - 1
                                        End If
                                    End If
                                'Подсчитываем, сколько строк сейчас в последнем столбце'
                                CountRowlastCol = WorksheetFunction.CountA(Range(Cells(6, lastCol), Cells(25, lastCol)))

                                Next Q

                            'Отправляем на предварительный просмотр перед печатью'
                            'Вписываем на 1 лист'
                            Application.PrintCommunication = False
                            ActiveSheet.PageSetup.FitToPagesWide = 1
                            Application.PrintCommunication = True
                            'Горизонтальная страница'
                            ActiveSheet.PageSetup.Orientation = xlLandscape
                            'Предпросмотр'
                            ActiveSheet.PrintPreview
                            'Отправляем на печать'
                            ActiveWorkbook.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
                            ActiveWindow.Close False
                            Windows("automatic-printing.xlsm").Activate

                            End If 'Закрываем проверку на наличие графика'
                    Next i 'Переходим к следующей дате'

                Else: s = s

                End If
            Next s

        'Очищаем фильтр'
        Range("Таблица1[[#Headers]]").Activate
        ActiveSheet.ShowAllData
        'Удаляем лишнее'
        Range("AT2:AT8").ClearContents
        Range("AS2:AS13") = False

        End If

    End Sub

Во второй модуль вставляем код:

Sub Sort()
        'Сортировкой по цвету (розовый) упорядочиваем строки от конца до начала'
        Rows("5:5").AutoFilter
        ActiveSheet.AutoFilter.Sort.SortFields.Clear
            ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("D6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)
        ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("E6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)
        ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("F6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)
        ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("G6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)
        ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("H6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)
        ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("I6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)
        ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("J6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)
        ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("K6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)
        ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("L6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)
        ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("M6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)
        ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("N6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)
        ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("O6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)
        ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("P6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)
        ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("Q6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)
        ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("R6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)
        ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("S6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)
        ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("T6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)
        ActiveSheet.AutoFilter.Sort.SortFields.Add(Range("U6" _
            ), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255 _
            , 199, 206)

        With ActiveSheet.AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Selection.AutoFilter
    End Sub

Сохраняем изменения. Последний штрих – создаем кнопку «Печать» и присваиваем ей макрос Filter.

Назначить макрос объекту

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

Заключение

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

Нужна помощь в Excel или Google Sheets? Свяжитесь с нами, обсудим все детали.

Оперативно решаем любую проблему в Excel и Google таблицах:

  • Написание формул любой сложности
  • Создание сводных таблиц
  • Визуализация данных (диаграммы, гистограммы)
  • Автоматизация расчётов и рутинных задач
  • Консультации по работе с таблицами и многое другое

Также, у нас Вы можете пройти бесплатные онлайн курсы по MS Excel с заданиями

Теперь для конкретно нашего примера нужно записать в поле следующий код:


Sub DataEntryForm()
Dim nextRow As Long
nextRow = Producty.Cells(Producty.Rows.Count, 2).End(xlUp).Offset(1, 0).Row
With Producty
If .Range("A2").Value = "" And .Range("B2").Value = "" Then
nextRow = nextRow - 1
End If
Producty.Range("Name").Copy
.Cells(nextRow, 2).PasteSpecial Paste:=xlPasteValues
.Cells(nextRow, 3).Value = Producty.Range("Volum").Value
.Cells(nextRow, 4).Value = Producty.Range("Price").Value
.Cells(nextRow, 5).Value = Producty.Range("Volum").Value * Producty.Range("Price").Value
.Range("A2").Formula = "=IF(ISBLANK(B2), """", COUNTA($B$2:B2))"
If nextRow > 2 Then
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A" & nextRow)
Range("A2:A" & nextRow).Select
End If
.Range("Diapason").ClearContents
End With
End Sub

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

Итак, первая строка:

Sub DataEntryForm()

«DataEntryForm» — это название самого макроса. Вы можете оставить его как есть, а можете заменить на любое другое, которое соответствует общим правилам создания наименований макросов (отсутствие пробелов, использование только букв латинского алфавита и т.д.). Изменение наименования ни на что не повлияет.

Везде, где встречается в коде слово «Producty» вы должны его заменить на то наименование, которое ранее присвоили для своего листа в поле «(Name)» области «Properties» редактора макросов. Естественно, это нужно делать только в том случае, если вы назвали лист по-другому.

как сделать печатную форму в excel

Теперь рассмотрим такую строку:

nextRow = Producty.Cells(Producty.Rows.Count, 2).End(xlUp).Offset(1, 0).Row

Цифра «2» в данной строчке означает второй столбец листа. Именно в этом столбце находится колонка «Наименование товара». По ней мы будем считать количество рядов. Поэтому, если в вашем случае аналогичный столбец имеет другой порядок по счету, то нужно ввести соответствующее число. Значение «End(xlUp).Offset(1, 0).Row» в любом случае оставляем без изменений.

как сделать печатную форму в excel

Далее рассмотрим строку

If .Range("A2").Value = "" And .Range("B2").Value = "" Then

«A2» — это координаты первой ячейки, в которой будет выводиться нумерация строк. «B2» — это координаты первой ячейки, по которой будет производиться вывод данных («Наименование товара»). Если они у вас отличаются, то введите вместо этих координат свои данные.

как сделать печатную форму в excel

Переходим к строке

Producty.Range("Name").Copy

В ней параметр «Name» означат имя, которое мы присвоили полю «Наименование товара» в форме ввода.

как сделать печатную форму в excel

В строках


.Cells(nextRow, 2).PasteSpecial Paste:=xlPasteValues
.Cells(nextRow, 3).Value = Producty.Range("Volum").Value
.Cells(nextRow, 4).Value = Producty.Range("Price").Value
.Cells(nextRow, 5).Value = Producty.Range("Volum").Value * Producty.Range("Price").Value

наименования «Volum» и «Price» означают названия, которые мы присвоили полям «Количество» и «Цена» в той же форме ввода.

как сделать печатную форму в excel

В этих же строках, которые мы указали выше, цифры «2», «3», «4», «5» означают номера столбцов на листе Excel, соответствующих колонкам «Наименование товара», «Количество», «Цена» и «Сумма». Поэтому, если в вашем случае таблица сдвинута, то нужно указать соответствующие номера столбцов. Если столбцов больше, то по аналогии нужно добавить её строки в код, если меньше – то убрать лишние.

как сделать печатную форму в excel

В строке производится умножение количества товара на его цену:

.Cells(nextRow, 5).Value = Producty.Range("Volum").Value * Producty.Range("Price").Value

Результат, как видим из синтаксиса записи, будет выводиться в пятый столбец листа Excel.

как сделать печатную форму в excel

В этом выражении выполняется автоматическая нумерация строк:


If nextRow > 2 Then
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A" & nextRow)
Range("A2:A" & nextRow).Select
End If

Все значения «A2» означают адрес первой ячейки, где будет производиться нумерация, а координаты «A» — адрес всего столбца с нумерацией. Проверьте, где именно будет выводиться нумерация в вашей таблице и измените данные координаты в коде, если это необходимо.

как сделать печатную форму в excel

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

.Range("Diapason").ClearContents

Не трудно догадаться, что («Diapason») означает наименование того диапазона, который мы ранее присвоили полям для ввода данных. Если вы дали им другое наименование, то в этой строке должно быть вставлено именно оно.

как сделать печатную форму в excel

Дальнейшая часть кода универсальна и во всех случаях будет вноситься без изменений.

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

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

  1. Ведение реестра документов
  2. Создание печатной формы
  3. Заполнение печатной формы

Ведение реестра документов

Реестр документов удобно заполнять в «Умной таблице» Excel, если не предполагается использование объединенных ячеек.

Далее мы рассмотрим реестр с данными сотрудников, который может использоваться для хранения этих данных и распечатки различных документов. На практике это был реестр Трудовых договоров, из которого распечатывались: Трудовой договор, Приложение к трудовому договору, Договор о материальной ответственности, Приказ о приеме на работу, Изменения к трудовому договору, Соглашение о расторжении трудового договора.

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

как сделать печатную форму в excelПример реестра документов в «Умной таблице» Excel

Для заполнения реестра данными можно использовать автоформу, подробнее о которой можно прочитать в разделе Работа с «Умной таблицей».

Создание печатной формы

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

В нашем примере используется печатная форма Договора о материальной ответственности, текст которого скопирован на рабочий лист Excel из документа Word:

как сделать печатную форму в excelДоговор о материальной ответственности

Если печатная форма на рабочем листе Excel готова, остается переместить (или скопировать) ее в книгу с реестром. Если реестр еще не создан, можно просто добавить новый лист в книгу с печатной формой и назвать его «Реестр…».

Заполнение печатной формы

Для заполнения печатной формы данными из реестра будем использовать встроенную функцию Excel — «ВПР». Ориентиром поиска по таблице будет номер записи в реестре по порядку, поэтому ячейку с номером договора укажем в формулах «ВПР» печатной формы как «Искомое_значение».

как сделать печатную форму в excelАргументы функции «ВПР»

В мастере функций набраны аргументы для формулы в ячейке «L4», которая после ввода примет следующий вид: =ВПР('Печать ДМО'!G1;'Реестр ДМО'!A2:J102;2;ЛОЖЬ)

Во все остальные ячейки с переменными значениями копируется эта формула, и в ней заменяется только «Номер_столбца».

Теперь при записи в ячейку «G1» номера нужной строки реестра, печатная форма Договора о материальной ответственности заполнится данными соответствующего работника.

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

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

Начнем с того, что не во всех версиях Excel сразу доступна волшебная кнопка Форма. В этом случае предварительно настройте Параметры (перейти к ним можно на вкладке Файл). Здесь вы также можете сразу не найти то, что нужно добавить на ленту. Поэтому сначала измените вариант в поле Выбрать команды (в данном случае нужен вариант Все команды). Чтобы добавить найденную в списке команду Форма, нужно выбрать имя вкладки, где разместится кнопка и создать новую группу. Теперь щелкните по кнопке Добавить и проверьте, появилась ли новая команда в новой группе.

как сделать печатную форму в excel

После этих манипуляций на вкладке Данные появится группа Работа с формами (это название задаете вы, когда создаете группу при настройке параметров Excel), а в ней нужная вам кнопка.

как сделать печатную форму в excel

Форму нельзя создать, если шапка таблицы занимает несколько строк — это минус.

как сделать печатную форму в excel

Но здесь можно «схитрить»: вставьте после настоящей шапки пустую строку, оформите заголовки строк в одну строку, для этой строки после создания формы установите нулевую высоту (ФорматРазмер ячеекВысота строки —).

как сделать печатную форму в excel

Осталось только щелкнуть на любой ячейке таблицы и на кнопке Форма. Готово, можно работать. Вы видите строку, относящуюся только к одному человеку, причем все названия граф в одной форме. Названия кнопок — настоящие подсказки для пользователя. Нужна новая строка — Добавить, не нужна существующая — Удалить, нужно перейти к какой-либо впереди — Далее, позади — Назад.

как сделать печатную форму в excel

Единственной «неочевидной» является кнопка Критерии. Она позволяет включать фильтр, чтобы быстрее находить нужные строки, если их очень много. При задании критерия можно использовать такие знаки, как «*» и «?», критериев может быть несколько (но задать их нужно в пределах одного окна). Для отключения фильтра используйте кнопку Правка.

как сделать печатную форму в excel

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

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

Like this post? Please share to your friends:
  • Печать в excel с отступом
  • Печать в excel печатные формы
  • Печать в excel одним листом
  • Печать в excel масштаб на одну страницу
  • Печать в 1с по шаблону excel