Vba excel печать на одной странице

 

Omnyblade

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

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

#1

10.06.2019 14:19:02

Добрый день.
Прошу помочь со следующей проблемой. Нужно распечатать все столбцы на 1 листе. Написал макрос

Код
Sub Макрос1()
    ActiveWindow.View = xlPageBreakPreview
    ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
End Sub

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

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

  • Пример.xlsm (15.71 КБ)

Изменено: Omnyblade10.06.2019 14:48:02

 

Юрий М

Модератор

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

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

Omnyblade, код следует оформлять соответствующим тегом: ищите такую кнопку (см. скрин) и исправьте своё сообщение.

 

Ёк-Мок

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

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

#3

13.06.2019 02:41:15

ИМХО добавьте в код строку:

Код
Sub Макрос1()
    On Error Resume Next'<=================================================
    ActiveWindow.View = xlPageBreakPreview
    ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
End Sub

Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.

 

sokol92

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

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

#4

13.06.2019 11:46:20

Штатное решение:

Код
Sub OnePageWide()
  With ActiveSheet.PageSetup
    .Zoom = False
    .FitToPagesWide = 1
    .FitToPagesTall = False
  End With
End Sub

Владимир

 

Omnyblade

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

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

#5

14.06.2019 11:20:36

Ёк-Мок, Спасибо, метод рабочий. Я бы еще добавил строку отключающую обработчик ошибок, чтоб остальные ошибки в макросе не прошли мимо

Код
Sub Макрос1()
    On Error Resume Next '<=================================================
    ActiveWindow.View = xlPageBreakPreview
    ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
    On Error GoTo 0 ' Выключаем обработчик ошибок, чтобы остальные ошибки не прошли мимо
End Sub

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

Изменено: Omnyblade14.06.2019 11:22:00

 

vikttur

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

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

#6

14.06.2019 11:21:50

Не стоит увлекаться обработчиком ошибок.

Группа: Проверенные

Ранг: Обитатель

Сообщений: 344


Репутация:

0

±

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


Excel 2016

Здравствуйте!
Ребята как через макрос, перед входом в окно просмотра печать,
[vba]

Код

Application.Sheets(«log_book»).PrintPreview     ‘Вход в окно просмотра Печать

[/vba]
вписать все столбцы таблицы на одну страницу?
Пробовал макрорекордером определить, выдает объемный код и что конкретно необходимо выбрать для выполнения необходимого действия, неясно.

Сообщение отредактировал Сергей13Вторник, 10.12.2019, 23:10

mor_sergey

77 / 11 / 0

Регистрация: 28.03.2018

Сообщений: 828

1

07.10.2019, 20:42. Показов 5071. Ответов 8

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

товарищи, мне надо в коде написать, чтобы настройки страницы были ВПИСАТЬ ЛИСТ НА ОДНУ СТРАНИЦУ….
Беда в том, что этот лист вновь создается…..как сделать, чтобы по умолчанию уже выбрано было это…
ни печати, ни предварительного просмотра не надо…Может кто знает. Спасибо друзья

Visual Basic
1
2
3
Private Sub Workbook_NewSheet(ByVal Sh As Object)
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

07.10.2019, 20:42

8

370 / 268 / 93

Регистрация: 18.11.2015

Сообщений: 990

08.10.2019, 08:37

2

Проблема здесь:

Цитата
Сообщение от mor_sergey
Посмотреть сообщение

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Разместите Ваши настройки в нужном макросе



1



77 / 11 / 0

Регистрация: 28.03.2018

Сообщений: 828

08.10.2019, 08:46

 [ТС]

3

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



0



ArtNord

370 / 268 / 93

Регистрация: 18.11.2015

Сообщений: 990

08.10.2019, 10:25

4

Visual Basic
1
2
3
4
Private Sub Workbook_Open()
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
End Sub

Для текущей книги при каждом открытии

Добавлено через 8 минут
И сохраните как шаблон



1



77 / 11 / 0

Регистрация: 28.03.2018

Сообщений: 828

08.10.2019, 10:34

 [ТС]

5

ArtNord, код напечать, это я зря написал…

когда выводим на печать(CTRL+P) по умолчанию вариант отображения на листе ТЕКУЩИЙ…..мне надо изменить умолчание на ВПИСАТЬ НА ОДНУ СТРАНИЦУ….

чтобы уважаемым юзерам не приходилось это делать самим…
все для людей



0



ArtNord

370 / 268 / 93

Регистрация: 18.11.2015

Сообщений: 990

08.10.2019, 11:04

6

Visual Basic
1
2
3
4
5
ActiveWindow.[B]SelectedSheets[/B].PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
 
ActiveWindow.[B]Sheets("Нужный лист")[/B].PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False

Добавлено через 3 минуты
но PrintOut именно выводит на печать.
А помоему у vba нет доступа к настройкам принтера.

Добавлено через 1 минуту
А поместить все на одном листе это как раз таки настройки печати/принтера. Здесь Нужно будет только один раз пользователю в предпросмотре указать нужные настройки, и затем они будут выбраны по умлочанию



1



77 / 11 / 0

Регистрация: 28.03.2018

Сообщений: 828

08.10.2019, 11:08

 [ТС]

7

ArtNord, да. Так и будут работать…Спасибо за консультацию



0



ArtNord

370 / 268 / 93

Регистрация: 18.11.2015

Сообщений: 990

08.10.2019, 11:45

8

Лучший ответ Сообщение было отмечено mor_sergey как решение

Решение

mor_sergey, сейчас покопался нашел:

Visual Basic
1
2
3
4
5
6
7
Sub Настройки_листа()
    With ActiveSheet.PageSetup
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
End Sub

Добавлено через 16 секунд
У меня получилось

Добавлено через 1 минуту
ActiveSheet — замените на нужный лист sheets(«Нужный лист»)

Добавлено через 1 минуту
То есть сбрасываете зум, и устанавливаете 1 лист в ширину и 1 в высоту

Добавлено через 5 минут
Подробнее здесь:
https://docs.microsoft.com/ru-… opagestall



1



77 / 11 / 0

Регистрация: 28.03.2018

Сообщений: 828

08.10.2019, 11:45

 [ТС]

9

ArtNord, Класс! теперь работает как надо.. Спасибо



0



The only thing I would want is to always set the ‘Fit all columns on one page’ setting when users open the Print tab in Excel.

And no, they don’t want to do it themselves. What a surprise :)

Here is a screenshot of where that is in Excel 2013:enter image description here

Tried to look for some VBA code like the following but without success.

With Sheets("Print Letter").PageSetup
.FitToPagesWide = 1
.FitToPagesTall = 1
End With

ashleedawg's user avatar

ashleedawg

20k8 gold badges73 silver badges104 bronze badges

asked Sep 9, 2014 at 9:25

Pepys's user avatar

2

Try setting the .FitToPagesTall to False to be able to manually set the .FitToPagesWide property.

MSDN link

If this property is False, Microsoft Excel scales the worksheet
according to the FitToPagesWide property. If the Zoom property is
True, the FitToPagesTall property is ignored.

Sub PrintColumns()
    Application.PrintCommunication = False
    With Sheets("Print Letter").PageSetup
        .FitToPagesWide = 1
        .FitToPagesTall = False
    End With
    Application.PrintCommunication = True
End Sub

answered Sep 9, 2014 at 9:29

3

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

Распечатать несколько выделений из одного рабочего листа на одной странице с кодом VBA

Распечатайте несколько вариантов из одного или нескольких рабочих листов на одной странице с помощью Kutools for Excel


Распечатать несколько выделений из одного рабочего листа на одной странице с кодом VBA

Чтобы распечатать несколько выбранных несмежных выборок одного рабочего листа на одной странице, следующий код VBA может помочь вам, пожалуйста, сделайте следующее:

1, нажмите Ctrl , чтобы выбрать диапазоны, которые вы хотите распечатать.

2. Удерживайте ALT + F11 ключи, и он открывает Microsoft Visual Basic для приложений окно.

3. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.

Код VBA: печать нескольких выделений на одной странице

Sub PrintOutRange()
'Updateby Extendoffice
Dim xRng1 As Range
Dim xRng2 As Range
Dim xNewWs As Worksheet
Dim xWs As Worksheet
Dim xIndex As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set xWs = ActiveSheet
Set xNewWs = Worksheets.Add
xWs.Select
xIndex = 1
For Each xRng2 In Selection.Areas
    xRng2.Copy
    Set xRng1 = xNewWs.Cells(xIndex, 1)
    xRng1.PasteSpecial xlPasteValues
    xRng1.PasteSpecial xlPasteFormats
    xIndex = xIndex + xRng2.Rows.Count
Next
xNewWs.Columns.AutoFit
xNewWs.PrintOut
xNewWs.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

4, Затем нажмите F5 нажмите клавишу для запуска этого кода, и выбранные вами диапазоны будут напечатаны сразу, и они будут напечатаны на одной странице.


Распечатайте несколько вариантов из одного или нескольких рабочих листов на одной странице с помощью Kutools for Excel

Приведенный выше код может помочь вам распечатать выбранные диапазоны только с одного рабочего листа. Если вы хотите, чтобы несколько вариантов выбора из нескольких рабочих листов были напечатаны на одной странице, приведенный выше код не будет работать. Пожалуйста, не волнуйтесь, здесь я могу представить вам удобный инструмент — Kutools for Excel, С его Мастер печати множественного выбора Утилита, вы можете распечатать выбор из одного рабочего листа или нескольких рабочих листов одновременно на одной странице.

После установки Kutools for Excel, выполните следующие действия:

1. Нажмите Кутулс Плюс > печать > Мастер печати множественного выбора, см. снимок экрана:

2. В Мастер печати множественного выбора, нажмитекнопка добавления документа , чтобы выбрать и добавить диапазон, который вы хотите напечатать, в поле списка «Диапазоны для печати» один за другим (вы можете выбрать диапазоны на одном или нескольких листах), нажмите кнопка удаления документа Кнопка может удалить ненужные диапазоны, см. снимок экрана:

документ распечатать несколько вариантов выбора 2

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

документ распечатать несколько вариантов выбора 3

4. Затем продолжайте нажимать Следующая >> butoon, на шаге 3 мастера укажите действие для временного рабочего листа, вы можете активировать рабочий лист, но не печатать, распечатать рабочий лист и сохранить его или распечатать рабочий лист и удалить его. Смотрите скриншот:

документ распечатать несколько вариантов выбора 4

5. Нажмите Завершить все выбранные диапазоны были вставлены на новый рабочий лист как связанные объекты изображения. И вы можете перетащить и переставить их на листе. Смотрите скриншот:

документ распечатать несколько вариантов выбора 5

6. При печати этого нового рабочего листа диапазоны будут распечатаны на одной странице по мере необходимости.

Нажмите, чтобы узнать больше об этой утилите Print Multiple Selection Wizard.

Скачать и бесплатную пробную версию Kutools for Excel Сейчас !


Демонстрация: распечатайте несколько вариантов из одного или нескольких рабочих листов на одной странице с помощью Kutools for Excel


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Like this post? Please share to your friends:
  • Vba excel печать диапазона ячеек
  • Vba excel печать в pdf
  • Vba excel переходит на лист
  • Vba excel переход на следующую строку
  • Vba excel переход на новую строку