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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос печати - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос печати (Макросы/Sub)
Макрос печати
BlackRaven Дата: Вторник, 29.05.2018, 08:05 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Доброго времени суток! Столкнулся со следующей задачей:
Необходим (для удобства) макрос печати. Но не простой, а с выделением области печати, принудительной горизонтальной ориентации и печати выделенного диапазона на 1 лист.

Простой макрос печати диапазона есть:
[vba]
Код

Sub Name()
With ThisWorkbook
.DisplayDrawingObjects = xlHide
.Worksheets(1).Range("A1:O23").PrintOut
.DisplayDrawingObjects = xlAll 'xlPlaceholders
End With
End Sub
[/vba]
Что нужно добавить для горизонтальной ориентации и печати выделенного диапазона на 1 лист?

Заранее большое человеческое спасибо! )))

P.S. с ориентацией справился (вроде). Добавил следующую строку ниже .DisplayDrawingObjects = xlHide:
[vba]
Код
.ActiveSheet.PageSetup.Orientation = xlLandscape
[/vba]


Сообщение отредактировал BlackRaven - Вторник, 29.05.2018, 08:22
 
Ответить
СообщениеДоброго времени суток! Столкнулся со следующей задачей:
Необходим (для удобства) макрос печати. Но не простой, а с выделением области печати, принудительной горизонтальной ориентации и печати выделенного диапазона на 1 лист.

Простой макрос печати диапазона есть:
[vba]
Код

Sub Name()
With ThisWorkbook
.DisplayDrawingObjects = xlHide
.Worksheets(1).Range("A1:O23").PrintOut
.DisplayDrawingObjects = xlAll 'xlPlaceholders
End With
End Sub
[/vba]
Что нужно добавить для горизонтальной ориентации и печати выделенного диапазона на 1 лист?

Заранее большое человеческое спасибо! )))

P.S. с ориентацией справился (вроде). Добавил следующую строку ниже .DisplayDrawingObjects = xlHide:
[vba]
Код
.ActiveSheet.PageSetup.Orientation = xlLandscape
[/vba]

Автор - BlackRaven
Дата добавления - 29.05.2018 в 08:05
Pelena Дата: Вторник, 29.05.2018, 08:37 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12756
Репутация: 2809 ±
Замечаний: 0% ±

Excel 2010, 2016 & Mac Excel
Для
печати выделенного диапазона на 1 лист
Макрорекодер записал
[vba]
Код
ActiveSheet.PageSetup.FitToPagesWide = 1
ActiveSheet.PageSetup.FitToPagesTall = 1
[/vba]


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеДля
печати выделенного диапазона на 1 лист
Макрорекодер записал
[vba]
Код
ActiveSheet.PageSetup.FitToPagesWide = 1
ActiveSheet.PageSetup.FitToPagesTall = 1
[/vba]

Автор - Pelena
Дата добавления - 29.05.2018 в 08:37
BlackRaven Дата: Вторник, 29.05.2018, 08:51 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Pelena, СПАСИБО огромное! Вроде все работает.

Итого получилось так:

[vba]
Код
Sub name()
With ThisWorkbook
DisplayDrawingObjects = xlHide
ActiveSheet.PageSetup.Orientation = xlLandscape
Worksheets(6).Range("A1:O23").PrintOut
ActiveSheet.PageSetup.FitToPagesWide = 1
ActiveSheet.PageSetup.FitToPagesTall = 1
DisplayDrawingObjects = xlAll 'xlPlaceholders
End With
End Sub
[/vba]

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

А с точки зрения правильности и т.д. и т.п. он правильно прописан, или кой чего мне на руки нужно сделать?
 
Ответить
СообщениеPelena, СПАСИБО огромное! Вроде все работает.

Итого получилось так:

[vba]
Код
Sub name()
With ThisWorkbook
DisplayDrawingObjects = xlHide
ActiveSheet.PageSetup.Orientation = xlLandscape
Worksheets(6).Range("A1:O23").PrintOut
ActiveSheet.PageSetup.FitToPagesWide = 1
ActiveSheet.PageSetup.FitToPagesTall = 1
DisplayDrawingObjects = xlAll 'xlPlaceholders
End With
End Sub
[/vba]

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

А с точки зрения правильности и т.д. и т.п. он правильно прописан, или кой чего мне на руки нужно сделать?

Автор - BlackRaven
Дата добавления - 29.05.2018 в 08:51
sboy Дата: Вторник, 29.05.2018, 09:14 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 1861
Репутация: 535 ±
Замечаний: 0% ±

Excel 2010
с точки зрения правильности

Вы печатаете, а потом устанавливаете размеры
Примерно так надо поправить
[vba]
Код
Sub name()
ThisWorkbook.DisplayDrawingObjects = xlHide
    With ActiveSheet.PageSetup
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .Orientation = xlLandscape
    End With
    Range("A1:O23").PrintOut
ThisWorkbook.DisplayDrawingObjects = xlAll 'xlPlaceholders
End Sub
[/vba]
 
Ответить
Сообщение
с точки зрения правильности

Вы печатаете, а потом устанавливаете размеры
Примерно так надо поправить
[vba]
Код
Sub name()
ThisWorkbook.DisplayDrawingObjects = xlHide
    With ActiveSheet.PageSetup
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .Orientation = xlLandscape
    End With
    Range("A1:O23").PrintOut
ThisWorkbook.DisplayDrawingObjects = xlAll 'xlPlaceholders
End Sub
[/vba]

Автор - sboy
Дата добавления - 29.05.2018 в 09:14
_Boroda_ Дата: Вторник, 29.05.2018, 09:25 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12399
Репутация: 5092 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
с точки зрения правильности

1. В одной строке у Вас работа с шестым листом, а в строках ниже и выше - с активным. Если активен шестой лист, то все нормально. А если нет?
2. Если написано [vba]
Код
With ThisWorkbook
[/vba], то это значит, что мы работаем с той книгой, где находится макрос. With что-то подразумевает, что внутри блока With - End With мы будем обращаться к этому что-то, но писать его не будем. Запись примерно такая
[vba]
Код
With ThisWorkbook
       .DisplayDrawingObjects = xlHide
End With
точка перед DisplayDrawingObjects означает, что перед ним как бы написано то, про что мы написали With. Если без With, то вот так [vba]
Код
ThisWorkbook.DisplayDrawingObjects = xlHide
[/vba]. Короче, почитайте справку про With https://msdn.microsoft.com/ru-ru....%3Dtrue
Кстати, ThisWorkbook здесь вообще не нужен. А вот ActiveSheet нужен
[vba]
Код
Sub nameu8()
    DisplayDrawingObjects = xlHide
    With ActiveSheet
        .PageSetup.Orientation = xlLandscape
        .Range("A1:O23").PrintOut
        .PageSetup.FitToPagesWide = 1
        .PageSetup.FitToPagesTall = 1
    End With
    DisplayDrawingObjects = xlAll
End Sub
[/vba]
3. Крайне нежелательно называть что-либо (макросы, функции, объекты, переменные, ...) именами, зарезервированными в Excel или в VBA. У Вас макрос называется "name". Не нужно так делать. Назовите как-нибудь иначе. Хотя бы "name_"


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
с точки зрения правильности

1. В одной строке у Вас работа с шестым листом, а в строках ниже и выше - с активным. Если активен шестой лист, то все нормально. А если нет?
2. Если написано [vba]
Код
With ThisWorkbook
[/vba], то это значит, что мы работаем с той книгой, где находится макрос. With что-то подразумевает, что внутри блока With - End With мы будем обращаться к этому что-то, но писать его не будем. Запись примерно такая
[vba]
Код
With ThisWorkbook
       .DisplayDrawingObjects = xlHide
End With
точка перед DisplayDrawingObjects означает, что перед ним как бы написано то, про что мы написали With. Если без With, то вот так [vba]
Код
ThisWorkbook.DisplayDrawingObjects = xlHide
[/vba]. Короче, почитайте справку про With https://msdn.microsoft.com/ru-ru....%3Dtrue
Кстати, ThisWorkbook здесь вообще не нужен. А вот ActiveSheet нужен
[vba]
Код
Sub nameu8()
    DisplayDrawingObjects = xlHide
    With ActiveSheet
        .PageSetup.Orientation = xlLandscape
        .Range("A1:O23").PrintOut
        .PageSetup.FitToPagesWide = 1
        .PageSetup.FitToPagesTall = 1
    End With
    DisplayDrawingObjects = xlAll
End Sub
[/vba]
3. Крайне нежелательно называть что-либо (макросы, функции, объекты, переменные, ...) именами, зарезервированными в Excel или в VBA. У Вас макрос называется "name". Не нужно так делать. Назовите как-нибудь иначе. Хотя бы "name_"

Автор - _Boroda_
Дата добавления - 29.05.2018 в 09:25
BlackRaven Дата: Вторник, 29.05.2018, 10:43 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, про имя - я знаю, спасибо (просто тут обозначил как Name. При запуске Вашего макроса - да, печатает выделенный фрагмент, но на 4-х листах. А у меня задача впихнуть невпихуемое (эти 4 листа на 1). Иными словами действия: "Выделить диапазон-настройка печати-альбомная ориентация-напечатать выделенный фрагмент-вписать лист на 1 страницу" должны проводиться в автоматическом режиме...
 
Ответить
Сообщение_Boroda_, про имя - я знаю, спасибо (просто тут обозначил как Name. При запуске Вашего макроса - да, печатает выделенный фрагмент, но на 4-х листах. А у меня задача впихнуть невпихуемое (эти 4 листа на 1). Иными словами действия: "Выделить диапазон-настройка печати-альбомная ориентация-напечатать выделенный фрагмент-вписать лист на 1 страницу" должны проводиться в автоматическом режиме...

Автор - BlackRaven
Дата добавления - 29.05.2018 в 10:43
sboy Дата: Вторник, 29.05.2018, 11:02 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 1861
Репутация: 535 ±
Замечаний: 0% ±

Excel 2010
но на 4-х листах

Вы печатаете, а потом устанавливаете размеры
 
Ответить
Сообщение
но на 4-х листах

Вы печатаете, а потом устанавливаете размеры

Автор - sboy
Дата добавления - 29.05.2018 в 11:02
BlackRaven Дата: Вторник, 29.05.2018, 11:08 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
sboy, да, читал Ваше замечание по этому поводу. Но Ваш код также печатает на 4-х листах)))
 
Ответить
Сообщениеsboy, да, читал Ваше замечание по этому поводу. Но Ваш код также печатает на 4-х листах)))

Автор - BlackRaven
Дата добавления - 29.05.2018 в 11:08
_Boroda_ Дата: Вторник, 29.05.2018, 11:14 | Сообщение № 9
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12399
Репутация: 5092 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Да, конечно, еще нужно поменять местами. К сожалению проверить наглядно сейчас не могу, поэтому только теоретически всё


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДа, конечно, еще нужно поменять местами. К сожалению проверить наглядно сейчас не могу, поэтому только теоретически всё

Автор - _Boroda_
Дата добавления - 29.05.2018 в 11:14
BlackRaven Дата: Вторник, 29.05.2018, 11:16 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, дак проверить не вопрос (сам сразу проверяю), вот только я еще пытаюсь понять суть написания макросов и учусь на пробах и ошибках. Что с чем поменять местами подскажете?
 
Ответить
Сообщение_Boroda_, дак проверить не вопрос (сам сразу проверяю), вот только я еще пытаюсь понять суть написания макросов и учусь на пробах и ошибках. Что с чем поменять местами подскажете?

Автор - BlackRaven
Дата добавления - 29.05.2018 в 11:16
sboy Дата: Вторник, 29.05.2018, 11:26 | Сообщение № 11
Группа: Проверенные
Ранг: Старожил
Сообщений: 1861
Репутация: 535 ±
Замечаний: 0% ±

Excel 2010
Но Ваш код также печатает на 4-х листах

проверил, сжимает до 1 листа нормально
 
Ответить
Сообщение
Но Ваш код также печатает на 4-х листах

проверил, сжимает до 1 листа нормально

Автор - sboy
Дата добавления - 29.05.2018 в 11:26
_Boroda_ Дата: Вторник, 29.05.2018, 11:32 | Сообщение № 12
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12399
Репутация: 5092 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
проверить не вопрос (сам сразу проверяю)
Мне не нужно, чтобы Вы проверяли. Мне нужно, чтобы я проверял перед тем, как сюда код выложить.
Что с чем поменять местами подскажете?
Это я про то, про что Сергей sboy писал


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
проверить не вопрос (сам сразу проверяю)
Мне не нужно, чтобы Вы проверяли. Мне нужно, чтобы я проверял перед тем, как сюда код выложить.
Что с чем поменять местами подскажете?
Это я про то, про что Сергей sboy писал

Автор - _Boroda_
Дата добавления - 29.05.2018 в 11:32
BlackRaven Дата: Вторник, 29.05.2018, 13:11 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
sboy, _Boroda_, Спасибо вам огромное. У меня действительно не вкидывало в 1 страницу. После добавления "ZOOM" все стало как нужно!

Итого вот какую версию я оставил:
[vba]
Код

Sub УПВПНР()
ThisWorkbook.DisplayDrawingObjects = xlHide
    With ActiveSheet.PageSetup
        .Orientation = xlLandscape
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    Range("A1:O23").PrintOut
ThisWorkbook.DisplayDrawingObjects = xlAll 'xlPlaceholders
End Sub
[/vba]

Нужно вплотную заняться изучением макросов, чтоб другим мозг не выносить))))
ЕЩЕ РАЗ СПАСИБО!!!
 
Ответить
Сообщениеsboy, _Boroda_, Спасибо вам огромное. У меня действительно не вкидывало в 1 страницу. После добавления "ZOOM" все стало как нужно!

Итого вот какую версию я оставил:
[vba]
Код

Sub УПВПНР()
ThisWorkbook.DisplayDrawingObjects = xlHide
    With ActiveSheet.PageSetup
        .Orientation = xlLandscape
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    Range("A1:O23").PrintOut
ThisWorkbook.DisplayDrawingObjects = xlAll 'xlPlaceholders
End Sub
[/vba]

Нужно вплотную заняться изучением макросов, чтоб другим мозг не выносить))))
ЕЩЕ РАЗ СПАСИБО!!!

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

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