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

Вход

Регистрация

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

 

= Мир MS Excel/Прошу проверить правильно ли записан код макрорекордером - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Прошу проверить правильно ли записан код макрорекордером (Макросы/Sub)
Прошу проверить правильно ли записан код макрорекордером
light26 Дата: Суббота, 01.04.2017, 15:12 | Сообщение № 1
Группа: Друзья
Ранг: Старожил
Сообщений: 1350
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Всем привет
Макрорекордером записал код.
[vba]
Код
Sub Печать()
'
' Печать Макрос
'
   Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
        End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.25)
        .RightMargin = Application.InchesToPoints(0.25)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = True
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = False
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
End Sub
[/vba]Он был больше, но я убрал лишнее (в моем понимании). Вопросы:
1. Все ли лишнее я убрал?
2. Будет ли код работать одинаково корректно для всех принтеров, учитывая настройки печати: А4, книжная, выравнивание по горизонтали, печать на одном листе?
3. Есть ли смысл параметру ".PrintQuality =" устанавливать значение 300 (на печать выводится только текст)?

Спасибо


Я не волшебник. Я только учусь

Сообщение отредактировал light26 - Суббота, 01.04.2017, 23:56
 
Ответить
СообщениеВсем привет
Макрорекордером записал код.
[vba]
Код
Sub Печать()
'
' Печать Макрос
'
   Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
        End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.25)
        .RightMargin = Application.InchesToPoints(0.25)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = True
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = False
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
End Sub
[/vba]Он был больше, но я убрал лишнее (в моем понимании). Вопросы:
1. Все ли лишнее я убрал?
2. Будет ли код работать одинаково корректно для всех принтеров, учитывая настройки печати: А4, книжная, выравнивание по горизонтали, печать на одном листе?
3. Есть ли смысл параметру ".PrintQuality =" устанавливать значение 300 (на печать выводится только текст)?

Спасибо

Автор - light26
Дата добавления - 01.04.2017 в 15:12
RAN Дата: Суббота, 01.04.2017, 15:39 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub Макрос1()
    With ActiveSheet
        With .PageSetup
            .CenterHorizontally = True
            .Orientation = xlPortrait
            .PaperSize = xlPaperA4
            .FitToPagesTall = 1
        End With
        .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    End With
End Sub
[/vba]
Может и еще что лишнее осталось... yes


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

Сообщение отредактировал RAN - Суббота, 01.04.2017, 15:40
 
Ответить
Сообщение[vba]
Код
Sub Макрос1()
    With ActiveSheet
        With .PageSetup
            .CenterHorizontally = True
            .Orientation = xlPortrait
            .PaperSize = xlPaperA4
            .FitToPagesTall = 1
        End With
        .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    End With
End Sub
[/vba]
Может и еще что лишнее осталось... yes

Автор - RAN
Дата добавления - 01.04.2017 в 15:39
light26 Дата: Суббота, 01.04.2017, 16:04 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1350
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Может и еще что лишнее осталось...
Андрей, как всегда, не могёт не подколоть :)
Спасибо за макрос. Я правильно понял, что макрорекордер прописывает все настройки печати, и те, которые идут по умолчанию можно не указывать?
И разве не нужен параметр .FitToPagesWide = 1, если печать на 1 страницу в высоту и 1 страницу в ширину?
И еще, если мы указываем ActiveSheet, то макрос будет применен к активному листу, т.е. к листу, на котором кнопка (в моем случае). А если мне надо напечатать скрытый лист, то я должен записать так:[vba]
Код
Sub Макрос1()
    With Sheets("Заявка")
        With .PageSetup
            .CenterHorizontally = True
            .Orientation = xlPortrait
            .PaperSize = xlPaperA4
            .FitToPagesTall = 1
        End With
        .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    End With
End Sub
[/vba]Верно?


Я не волшебник. Я только учусь

Сообщение отредактировал light26 - Суббота, 01.04.2017, 16:24
 
Ответить
Сообщение
Может и еще что лишнее осталось...
Андрей, как всегда, не могёт не подколоть :)
Спасибо за макрос. Я правильно понял, что макрорекордер прописывает все настройки печати, и те, которые идут по умолчанию можно не указывать?
И разве не нужен параметр .FitToPagesWide = 1, если печать на 1 страницу в высоту и 1 страницу в ширину?
И еще, если мы указываем ActiveSheet, то макрос будет применен к активному листу, т.е. к листу, на котором кнопка (в моем случае). А если мне надо напечатать скрытый лист, то я должен записать так:[vba]
Код
Sub Макрос1()
    With Sheets("Заявка")
        With .PageSetup
            .CenterHorizontally = True
            .Orientation = xlPortrait
            .PaperSize = xlPaperA4
            .FitToPagesTall = 1
        End With
        .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    End With
End Sub
[/vba]Верно?

Автор - light26
Дата добавления - 01.04.2017 в 16:04
RAN Дата: Суббота, 01.04.2017, 16:21 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
При сжатии 2 страниц в высоту до 1 , ширина получается 0,5 страницы. Так что можешь смело ставить
[vba]
Код
.FitToPagesWide = 100
[/vba]
:D


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеПри сжатии 2 страниц в высоту до 1 , ширина получается 0,5 страницы. Так что можешь смело ставить
[vba]
Код
.FitToPagesWide = 100
[/vba]
:D

Автор - RAN
Дата добавления - 01.04.2017 в 16:21
light26 Дата: Суббота, 01.04.2017, 16:23 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1350
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Излишнее цитирование удалено администрацией
Понял :)
[moder]Вадим, блин, ну ты еще косячить будешь, да?[/moder]


Я не волшебник. Я только учусь

Сообщение отредактировал _Boroda_ - Суббота, 01.04.2017, 16:26
 
Ответить
СообщениеИзлишнее цитирование удалено администрацией
Понял :)
[moder]Вадим, блин, ну ты еще косячить будешь, да?[/moder]

Автор - light26
Дата добавления - 01.04.2017 в 16:23
light26 Дата: Суббота, 01.04.2017, 16:28 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1350
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Я не хотел :)


Я не волшебник. Я только учусь
 
Ответить
СообщениеЯ не хотел :)

Автор - light26
Дата добавления - 01.04.2017 в 16:28
Pelena Дата: Суббота, 01.04.2017, 17:32 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 19187
Репутация: 4421 ±
Замечаний: ±

Excel 365 & Mac Excel
Название темы ни о чём. Вадим, тебя тоже послать читать Правила форума?


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

Автор - Pelena
Дата добавления - 01.04.2017 в 17:32
light26 Дата: Суббота, 01.04.2017, 18:04 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1350
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Название темы ни о чём. Вадим, тебя тоже послать читать Правила форума?
Виноват, исправлюсь


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Название темы ни о чём. Вадим, тебя тоже послать читать Правила форума?
Виноват, исправлюсь

Автор - light26
Дата добавления - 01.04.2017 в 18:04
light26 Дата: Суббота, 01.04.2017, 18:20 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1350
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Не работает :(
Для печати скрытых листов изменил код:[vba]
Код
Sub Печать()
Application.ScreenUpdating = False
Sheets("Счет").Visible = True
    With Sheets("Счет")
        With .PageSetup
            .FitToPagesTall = 1
            .FitToPagesWide = 1
            .CenterHorizontally = True
            .Orientation = xlPortrait
            .PaperSize = xlPaperA4
                    End With
        .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
     Sheets("Счет").Visible = False
     End With
      Application.ScreenUpdating = True
End Sub
[/vba]Но почему-то печатаются 2 листа: один со счетом, а второй - пустой :(
В чем причина? Или просто дописать в код, чтобы печатался только первый лист?


Я не волшебник. Я только учусь

Сообщение отредактировал light26 - Суббота, 01.04.2017, 23:57
 
Ответить
СообщениеНе работает :(
Для печати скрытых листов изменил код:[vba]
Код
Sub Печать()
Application.ScreenUpdating = False
Sheets("Счет").Visible = True
    With Sheets("Счет")
        With .PageSetup
            .FitToPagesTall = 1
            .FitToPagesWide = 1
            .CenterHorizontally = True
            .Orientation = xlPortrait
            .PaperSize = xlPaperA4
                    End With
        .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
     Sheets("Счет").Visible = False
     End With
      Application.ScreenUpdating = True
End Sub
[/vba]Но почему-то печатаются 2 листа: один со счетом, а второй - пустой :(
В чем причина? Или просто дописать в код, чтобы печатался только первый лист?

Автор - light26
Дата добавления - 01.04.2017 в 18:20
light26 Дата: Суббота, 01.04.2017, 18:31 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1350
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Сам поборол болячку :)
[vba]
Код
Sub Печать()
Application.ScreenUpdating = False
Sheets("Счет").Visible = True
    With Sheets("Счет")
        With .PageSetup
            .FitToPagesTall = 1
            .FitToPagesWide = 1
            .CenterHorizontally = True
            .Orientation = xlPortrait
            .PaperSize = xlPaperA4
                    End With
        .PrintOut From:=1, To:=1, Copies:=1, Collate:=True, IgnorePrintAreas:=False
     Sheets("Счет").Visible = False
     End With
      Application.ScreenUpdating = True
End Sub
[/vba]


Я не волшебник. Я только учусь
 
Ответить
СообщениеСам поборол болячку :)
[vba]
Код
Sub Печать()
Application.ScreenUpdating = False
Sheets("Счет").Visible = True
    With Sheets("Счет")
        With .PageSetup
            .FitToPagesTall = 1
            .FitToPagesWide = 1
            .CenterHorizontally = True
            .Orientation = xlPortrait
            .PaperSize = xlPaperA4
                    End With
        .PrintOut From:=1, To:=1, Copies:=1, Collate:=True, IgnorePrintAreas:=False
     Sheets("Счет").Visible = False
     End With
      Application.ScreenUpdating = True
End Sub
[/vba]

Автор - light26
Дата добавления - 01.04.2017 в 18:31
RAN Дата: Суббота, 01.04.2017, 20:04 | Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Модер1 - по всей морде хрюпс!
Модер2 - по всей морде хряпс!
а он на цирлах
Виноват, исправлюсь

Брось врать! Горбатого .....
И то не факт.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеМодер1 - по всей морде хрюпс!
Модер2 - по всей морде хряпс!
а он на цирлах
Виноват, исправлюсь

Брось врать! Горбатого .....
И то не факт.

Автор - RAN
Дата добавления - 01.04.2017 в 20:04
light26 Дата: Суббота, 01.04.2017, 20:05 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1350
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Брось врать! Горбатого .....
И то не факт.
Ну, это уже хамство


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Брось врать! Горбатого .....
И то не факт.
Ну, это уже хамство

Автор - light26
Дата добавления - 01.04.2017 в 20:05
RAN Дата: Суббота, 01.04.2017, 20:08 | Сообщение № 13
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Вадим, да нешто?
Я бы еще мог согласиться в отношении кого другого
[offtop]Нет, ежели что, ты мне писни в личку, и я на твои сообщения вообще реагировать не буду.[/offtop]


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

Сообщение отредактировал RAN - Суббота, 01.04.2017, 20:56
 
Ответить
СообщениеВадим, да нешто?
Я бы еще мог согласиться в отношении кого другого
[offtop]Нет, ежели что, ты мне писни в личку, и я на твои сообщения вообще реагировать не буду.[/offtop]

Автор - RAN
Дата добавления - 01.04.2017 в 20:08
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Прошу проверить правильно ли записан код макрорекордером (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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