Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос печати страницы с заполненными столбцами - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос печати страницы с заполненными столбцами (Макросы/Sub)
Макрос печати страницы с заполненными столбцами
krilovsky68 Дата: Четверг, 03.03.2022, 13:10 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
здравствуйте.
у меня есть макрос для печати листов:
[vba]
Код
Private Sub Макрос8()
Application.ScreenUpdating = False
Sheets("журнал постановлений").Visible = True
Sheets("журнал постановлений").Select
ActiveSheet.PrintOut copies:=1
Sheets("журнал постановлений").Visible = True
Sheets("форма").Select
Application.ScreenUpdating = True
End Sub
[/vba]
Возникла необходимость сделать, что бы на печать выводились только страницы, на которых в ячейках E8-E... есть текст.
Я попробовал добавить в макрос строку Range("Е2:E1000") = Range("Е2:E1000").Value, но понял, что это мне не под силу.
Строку вставлял после Sheets("журнал постановлений").Select
Одним словом, моя попытка скопировать с похожего варианта успехом не увенчалась.

Еще возник момент момент, когда печатается, то на второй стороне листа (двухсторонняя печать) страница выходит к верх ногами (надеюсь что объяснил)
Как вариант, может возможно сделать так, что бы:
1.1. печаталось не с двух сторон.
1.2. если печаталось с двух сторон, то по нормальному

прикрепил файл
1. заполняется страница "дела".
2. страница "журнал постановлений", заполняется со страницы дела.
3. на странице форма кнопка печати.

заранее спасибо за помощь.
К сообщению приложен файл: 7031960.xlsm(64.7 Kb)


адвокат

Сообщение отредактировал krilovsky68 - Четверг, 03.03.2022, 15:06
 
Ответить
Сообщениездравствуйте.
у меня есть макрос для печати листов:
[vba]
Код
Private Sub Макрос8()
Application.ScreenUpdating = False
Sheets("журнал постановлений").Visible = True
Sheets("журнал постановлений").Select
ActiveSheet.PrintOut copies:=1
Sheets("журнал постановлений").Visible = True
Sheets("форма").Select
Application.ScreenUpdating = True
End Sub
[/vba]
Возникла необходимость сделать, что бы на печать выводились только страницы, на которых в ячейках E8-E... есть текст.
Я попробовал добавить в макрос строку Range("Е2:E1000") = Range("Е2:E1000").Value, но понял, что это мне не под силу.
Строку вставлял после Sheets("журнал постановлений").Select
Одним словом, моя попытка скопировать с похожего варианта успехом не увенчалась.

Еще возник момент момент, когда печатается, то на второй стороне листа (двухсторонняя печать) страница выходит к верх ногами (надеюсь что объяснил)
Как вариант, может возможно сделать так, что бы:
1.1. печаталось не с двух сторон.
1.2. если печаталось с двух сторон, то по нормальному

прикрепил файл
1. заполняется страница "дела".
2. страница "журнал постановлений", заполняется со страницы дела.
3. на странице форма кнопка печати.

заранее спасибо за помощь.

Автор - krilovsky68
Дата добавления - 03.03.2022 в 13:10
krilovsky68 Дата: Четверг, 03.03.2022, 20:58 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
попробую сформировать вопрос по другому: вообще такое возможно?


адвокат
 
Ответить
Сообщениепопробую сформировать вопрос по другому: вообще такое возможно?

Автор - krilovsky68
Дата добавления - 03.03.2022 в 20:58
Pelena Дата: Пятница, 04.03.2022, 08:35 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 18611
Репутация: 4220 ±
Замечаний: ±

Excel 2016 & Mac Excel
Можно попробовать вместо
[vba]
Код
ActiveSheet.PrintOut copies:=1
[/vba]
написать
[vba]
Код
If Range("E8") <> 0 Then ActiveSheet.PrintOut copies:=1
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеМожно попробовать вместо
[vba]
Код
ActiveSheet.PrintOut copies:=1
[/vba]
написать
[vba]
Код
If Range("E8") <> 0 Then ActiveSheet.PrintOut copies:=1
[/vba]

Автор - Pelena
Дата добавления - 04.03.2022 в 08:35
krilovsky68 Дата: Пятница, 04.03.2022, 09:12 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Можно попробовать вместо
Код
ActiveSheet.PrintOut copies:=1
написать
Код
If Range("E8") <> 0 Then ActiveSheet.PrintOut copies:=1
попробовал. ничего не изменилось.
1. распечаталось две страницы таблицы
2. ориентация второй страницы осталась такой же

в любом случае спасибо за желание помочь


адвокат

Сообщение отредактировал krilovsky68 - Пятница, 04.03.2022, 09:12
 
Ответить
Сообщение
Можно попробовать вместо
Код
ActiveSheet.PrintOut copies:=1
написать
Код
If Range("E8") <> 0 Then ActiveSheet.PrintOut copies:=1
попробовал. ничего не изменилось.
1. распечаталось две страницы таблицы
2. ориентация второй страницы осталась такой же

в любом случае спасибо за желание помочь

Автор - krilovsky68
Дата добавления - 04.03.2022 в 09:12
Pelena Дата: Пятница, 04.03.2022, 09:44 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 18611
Репутация: 4220 ±
Замечаний: ±

Excel 2016 & Mac Excel
Видимо, я не совсем правильно поняла задачу.
Проверьте так.
Что касается второго вопроса, то надо смотреть настройки параметров принтера. Там есть галка Поворот на 180 градусов, её надо снять
К сообщению приложен файл: 0888196.xlsm(66.3 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВидимо, я не совсем правильно поняла задачу.
Проверьте так.
Что касается второго вопроса, то надо смотреть настройки параметров принтера. Там есть галка Поворот на 180 градусов, её надо снять

Автор - Pelena
Дата добавления - 04.03.2022 в 09:44
krilovsky68 Дата: Пятница, 04.03.2022, 10:19 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Pelena, спасибо.
вроде бы все работает, даже лучше чем я думал - выборка на печать идет только тех строк которые заполнены даже по середине таблицы.
Я перенес Ваш макрос в свой файл, и печать стала подвисать просто безбожно) - 1 мин 40 сек.

еще момент один: если в середине следующего листа сделать текст в ячейке, то эксель, как я понимаю, перед печатью скрывает незаполненные ячейки, а потом забывает их раскрыть - они в скрытых оказываются (на листе печати (надеюсь понятно объяснил)


адвокат

Сообщение отредактировал krilovsky68 - Пятница, 04.03.2022, 10:21
 
Ответить
СообщениеPelena, спасибо.
вроде бы все работает, даже лучше чем я думал - выборка на печать идет только тех строк которые заполнены даже по середине таблицы.
Я перенес Ваш макрос в свой файл, и печать стала подвисать просто безбожно) - 1 мин 40 сек.

еще момент один: если в середине следующего листа сделать текст в ячейке, то эксель, как я понимаю, перед печатью скрывает незаполненные ячейки, а потом забывает их раскрыть - они в скрытых оказываются (на листе печати (надеюсь понятно объяснил)

Автор - krilovsky68
Дата добавления - 04.03.2022 в 10:19
Pelena Дата: Пятница, 04.03.2022, 10:28 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 18611
Репутация: 4220 ±
Замечаний: ±

Excel 2016 & Mac Excel
Можно попробовать немного ускорить
К сообщению приложен файл: 4504357.xlsm(67.1 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеМожно попробовать немного ускорить

Автор - Pelena
Дата добавления - 04.03.2022 в 10:28
krilovsky68 Дата: Пятница, 04.03.2022, 11:35 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Время уменьшилось до 55,93 сек.
В любом случае ОГРОМНОЕ спасибо.

Попытался разобраться в макросе, понял что это уже для меня непосильно (а какая срока выборку делает? я правильно понял, что на наличие информации оцениваются все столбцы)

Елена (Pelena), как профессионал, скажите пожалуйста, а может удобнее сделать что бы таблица заполнялась автоматически, в зависимости от столбца "E"?
Пробовал сделать умную таблицу (список), но она автоматически продлевается ориентируясь на столбец "А". Пробовал добавить в таблицу скрытый столбец, в котором продублировать E (=дела!B4), но таблица меня не поняла :D


адвокат
 
Ответить
СообщениеВремя уменьшилось до 55,93 сек.
В любом случае ОГРОМНОЕ спасибо.

Попытался разобраться в макросе, понял что это уже для меня непосильно (а какая срока выборку делает? я правильно понял, что на наличие информации оцениваются все столбцы)

Елена (Pelena), как профессионал, скажите пожалуйста, а может удобнее сделать что бы таблица заполнялась автоматически, в зависимости от столбца "E"?
Пробовал сделать умную таблицу (список), но она автоматически продлевается ориентируясь на столбец "А". Пробовал добавить в таблицу скрытый столбец, в котором продублировать E (=дела!B4), но таблица меня не поняла :D

Автор - krilovsky68
Дата добавления - 04.03.2022 в 11:35
Pelena Дата: Пятница, 04.03.2022, 14:41 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 18611
Репутация: 4220 ±
Замечаний: ±

Excel 2016 & Mac Excel
на наличие информации оцениваются все столбцы
нет, только Е

может удобнее сделать что бы таблица заполнялась автоматически, в зависимости от столбца "E"?
если она будет заполняться макросом, то не нужно будет скрывать/открывать строки, это будет более оптимальный вариант


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
на наличие информации оцениваются все столбцы
нет, только Е

может удобнее сделать что бы таблица заполнялась автоматически, в зависимости от столбца "E"?
если она будет заполняться макросом, то не нужно будет скрывать/открывать строки, это будет более оптимальный вариант

Автор - Pelena
Дата добавления - 04.03.2022 в 14:41
krilovsky68 Дата: Пятница, 04.03.2022, 16:28 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
с вашего позволения:
[vba]
Код

Private Sub Макрос8()
    Dim rng As Range
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    Sheets("журнал постановлений").Visible = True
    Sheets("журнал постановлений").Select
    r0 = 8
    rlast = Cells(Rows.Count, 1).End(xlUp).Row
    If rlast <= r0 Then Exit Sub
    For i = r0 To rlast
        If Cells(i, 5) = 0 Then
        If rng Is Nothing Then Set rng = Rows(i) Else Set rng = Union(rng, Rows(i))
        End If
    Next i
    If Not rng Is Nothing Then rng.EntireRow.Hidden = True
    
    rlast1 = Cells(Rows.Count, 5).End(xlUp).Row

    If rlast1 > r0 Then ActiveSheet.PrintOut copies:=1

    For i = r0 To rlast
        If Cells(i, 5) = 0 Then Rows(i).Hidden = False
    Next i

    Sheets("журнал постановлений").Visible = True
    Sheets("форма").Select
    
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub
[/vba]

Первый вопрос:
Я правильно понял: Cells(i, 5) определяет столбец по счету(1,2,3,4,5), который необходимо оценить на наличие/отсутствие информации, после чего информация?

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

Третий вопрос:
Как я понимаю вычисление идет с 1 по последнюю строку 1 048 576
Как можно ограничить поле вычисления например с 8 по 400 строку (больше не будет), это по моему должно в разы уменьшить время обработки.

заранее спасибо.


адвокат

Сообщение отредактировал krilovsky68 - Пятница, 04.03.2022, 16:42
 
Ответить
Сообщениес вашего позволения:
[vba]
Код

Private Sub Макрос8()
    Dim rng As Range
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    Sheets("журнал постановлений").Visible = True
    Sheets("журнал постановлений").Select
    r0 = 8
    rlast = Cells(Rows.Count, 1).End(xlUp).Row
    If rlast <= r0 Then Exit Sub
    For i = r0 To rlast
        If Cells(i, 5) = 0 Then
        If rng Is Nothing Then Set rng = Rows(i) Else Set rng = Union(rng, Rows(i))
        End If
    Next i
    If Not rng Is Nothing Then rng.EntireRow.Hidden = True
    
    rlast1 = Cells(Rows.Count, 5).End(xlUp).Row

    If rlast1 > r0 Then ActiveSheet.PrintOut copies:=1

    For i = r0 To rlast
        If Cells(i, 5) = 0 Then Rows(i).Hidden = False
    Next i

    Sheets("журнал постановлений").Visible = True
    Sheets("форма").Select
    
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub
[/vba]

Первый вопрос:
Я правильно понял: Cells(i, 5) определяет столбец по счету(1,2,3,4,5), который необходимо оценить на наличие/отсутствие информации, после чего информация?

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

Третий вопрос:
Как я понимаю вычисление идет с 1 по последнюю строку 1 048 576
Как можно ограничить поле вычисления например с 8 по 400 строку (больше не будет), это по моему должно в разы уменьшить время обработки.

заранее спасибо.

Автор - krilovsky68
Дата добавления - 04.03.2022 в 16:28
Pelena Дата: Пятница, 04.03.2022, 18:01 | Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 18611
Репутация: 4220 ±
Замечаний: ±

Excel 2016 & Mac Excel
Я правильно понял
правильно

Возможно на примере
пример макроса с комментариями в файле

с 1 по последнюю строку 1 048 576
нет, макрос находит последнюю заполненную строку в указанном столбце
К сообщению приложен файл: 9257358.xlsm(67.7 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
Я правильно понял
правильно

Возможно на примере
пример макроса с комментариями в файле

с 1 по последнюю строку 1 048 576
нет, макрос находит последнюю заполненную строку в указанном столбце

Автор - Pelena
Дата добавления - 04.03.2022 в 18:01
krilovsky68 Дата: Пятница, 04.03.2022, 21:06 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
пример макроса с комментариями в файле

Елена (Pelena), а макрос как я понял запускается только при нажатии на кнопку печать?
Возможно ли, что макрос "постоянно" работал на заполнение страницы (грубо говоря как у меня ссылки)


адвокат
 
Ответить
Сообщение
пример макроса с комментариями в файле

Елена (Pelena), а макрос как я понял запускается только при нажатии на кнопку печать?
Возможно ли, что макрос "постоянно" работал на заполнение страницы (грубо говоря как у меня ссылки)

Автор - krilovsky68
Дата добавления - 04.03.2022 в 21:06
Pelena Дата: Пятница, 04.03.2022, 22:08 | Сообщение № 13
Группа: Админы
Ранг: Местный житель
Сообщений: 18611
Репутация: 4220 ±
Замечаний: ±

Excel 2016 & Mac Excel
Тогда оставляйте формулы и возвращайтесь к макросу из сообщения 7


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеТогда оставляйте формулы и возвращайтесь к макросу из сообщения 7

Автор - Pelena
Дата добавления - 04.03.2022 в 22:08
krilovsky68 Дата: Пятница, 04.03.2022, 23:06 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Елена (Pelena), спасибо Вам.
Предложенный вами вариант с заполнением таблицы с помощью макроса, кажется более удобным вариантом.
В этом случае
кнопка заполнить журнал постановлений.
кнопка печать

Получилось вот так).
Наверное примитивно в части рисования таблицы, но)
К сообщению приложен файл: 8723872.xlsm(60.6 Kb)


адвокат

Сообщение отредактировал krilovsky68 - Пятница, 04.03.2022, 23:07
 
Ответить
СообщениеЕлена (Pelena), спасибо Вам.
Предложенный вами вариант с заполнением таблицы с помощью макроса, кажется более удобным вариантом.
В этом случае
кнопка заполнить журнал постановлений.
кнопка печать

Получилось вот так).
Наверное примитивно в части рисования таблицы, но)

Автор - krilovsky68
Дата добавления - 04.03.2022 в 23:06
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос печати страницы с заполненными столбцами (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2022 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!