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

Вход

Регистрация

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

 

= Мир MS Excel/Автоматическая разметка для печати страницы.VBA. - Мир MS Excel

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

Excel 2010
Нужно автоматически разметить страницу для печати (12 клеток в ширину 62 в длину), так как обычными екселевскими методами это сделать нельзя была идея сделать это макросом. Есть для этого код, написанных добрым человеком, но очень часто вылазиет ошибка(1004), и этот макрос работает не во всех документах. Что в нем не так и как это поправить? (Сам совсем плохо разбираюсь VBA и в макросах)

[vba]
Код

Sub PageBreak()
    r = Int(Range(ActiveSheet.PageSetup.PrintArea).Rows.Count / 62)
    c = Int(Range(ActiveSheet.PageSetup.PrintArea).Columns.Count / 12)
    For i = 1 To r
        Set ActiveSheet.HPageBreaks(i).Location = Range("A" & i * 62 + 1)
    Next i
    For i = 1 To c
        Set ActiveSheet.VPageBreaks(i).Location = Cells(1, i * 12 + 1)
    Next i
End Sub
[/vba]
К сообщению приложен файл: 0831429.jpg (17.4 Kb)
 
Ответить
СообщениеНужно автоматически разметить страницу для печати (12 клеток в ширину 62 в длину), так как обычными екселевскими методами это сделать нельзя была идея сделать это макросом. Есть для этого код, написанных добрым человеком, но очень часто вылазиет ошибка(1004), и этот макрос работает не во всех документах. Что в нем не так и как это поправить? (Сам совсем плохо разбираюсь VBA и в макросах)

[vba]
Код

Sub PageBreak()
    r = Int(Range(ActiveSheet.PageSetup.PrintArea).Rows.Count / 62)
    c = Int(Range(ActiveSheet.PageSetup.PrintArea).Columns.Count / 12)
    For i = 1 To r
        Set ActiveSheet.HPageBreaks(i).Location = Range("A" & i * 62 + 1)
    Next i
    For i = 1 To c
        Set ActiveSheet.VPageBreaks(i).Location = Cells(1, i * 12 + 1)
    Next i
End Sub
[/vba]

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

Excel 2010
Вопрос снят - проблема непостоянства в то что макрос не может увеличивать область печати, только уменьшать
 
Ответить
СообщениеВопрос снят - проблема непостоянства в то что макрос не может увеличивать область печати, только уменьшать

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

2010
Тогда 1 строкой
[vba]
Код
    ActiveSheet.ResetAllPageBreaks
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеТогда 1 строкой
[vba]
Код
    ActiveSheet.ResetAllPageBreaks
[/vba]

Автор - RAN
Дата добавления - 30.11.2015 в 21:20
omon3 Дата: Четверг, 10.12.2015, 21:23 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
RAN, не работает с вашей первой строчкой - пишет про недействительную внешнюю процедуру
[vba]
Код

    ActiveSheet.ResetAllPageBreaks
Sub ssd()
    r = Int(Range(ActiveSheet.PageSetup.PrintArea).Rows.Count / 62)
    c = Int(Range(ActiveSheet.PageSetup.PrintArea).Columns.Count / 12)
    For i = 1 To r
        Set ActiveSheet.HPageBreaks(i).Location = Range("A" & i * 62 + 1)
    Next i
    For i = 1 To c
        Set ActiveSheet.VPageBreaks(i).Location = Cells(1, i * 12 + 1)
    Next i

End Sub
[/vba]
 
Ответить
СообщениеRAN, не работает с вашей первой строчкой - пишет про недействительную внешнюю процедуру
[vba]
Код

    ActiveSheet.ResetAllPageBreaks
Sub ssd()
    r = Int(Range(ActiveSheet.PageSetup.PrintArea).Rows.Count / 62)
    c = Int(Range(ActiveSheet.PageSetup.PrintArea).Columns.Count / 12)
    For i = 1 To r
        Set ActiveSheet.HPageBreaks(i).Location = Range("A" & i * 62 + 1)
    Next i
    For i = 1 To c
        Set ActiveSheet.VPageBreaks(i).Location = Cells(1, i * 12 + 1)
    Next i

End Sub
[/vba]

Автор - omon3
Дата добавления - 10.12.2015 в 21:23
Kuzmich Дата: Четверг, 10.12.2015, 22:05 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Так строку то вставьте внутрь процедуры Sub
 
Ответить
СообщениеТак строку то вставьте внутрь процедуры Sub

Автор - Kuzmich
Дата добавления - 10.12.2015 в 22:05
omon3 Дата: Пятница, 26.02.2016, 16:27 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Так строку то вставьте внутрь процедуры Sub
извините что не отвечал, пришлось проект отложить. Сегодня только руки дошли - все равно не работает. пишет ошибку и ругается на
[vba]
Код
r = Int(Range(ActiveSheet.PageSetup.PrintArea).Rows.Count / 62)
[/vba]
 
Ответить
Сообщение
Так строку то вставьте внутрь процедуры Sub
извините что не отвечал, пришлось проект отложить. Сегодня только руки дошли - все равно не работает. пишет ошибку и ругается на
[vba]
Код
r = Int(Range(ActiveSheet.PageSetup.PrintArea).Rows.Count / 62)
[/vba]

Автор - omon3
Дата добавления - 26.02.2016 в 16:27
Kuzmich Дата: Пятница, 26.02.2016, 19:07 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
А печатаемый диапазон листа установлен?
 
Ответить
СообщениеА печатаемый диапазон листа установлен?

Автор - Kuzmich
Дата добавления - 26.02.2016 в 19:07
omon3 Дата: Суббота, 27.02.2016, 11:14 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
По идее выбраны "Настраиваемые поля" при печати.
 
Ответить
СообщениеПо идее выбраны "Настраиваемые поля" при печати.

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

2010
К гадалке очередь длинная.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеК гадалке очередь длинная.

Автор - RAN
Дата добавления - 27.02.2016 в 11:21
omon3 Дата: Суббота, 27.02.2016, 14:40 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Появилась ещё одна проблема - картинки (QR коды) сами по себе съезжают.. ТОЛЬКО при печати, хотя визуально расположены правильно. Все остальные - работают отлично. QR коды вставляет в excel программа написанная мной на Python. Прикрепил сам ексель, посмотрите кому не сложно.
Ссылка удалена. Нарушение Правил форума
[moder]Этот вопрос не имеет отношения к первоначальной теме. Создавайте новую[/moder]


Сообщение отредактировал Pelena - Суббота, 27.02.2016, 14:55
 
Ответить
СообщениеПоявилась ещё одна проблема - картинки (QR коды) сами по себе съезжают.. ТОЛЬКО при печати, хотя визуально расположены правильно. Все остальные - работают отлично. QR коды вставляет в excel программа написанная мной на Python. Прикрепил сам ексель, посмотрите кому не сложно.
Ссылка удалена. Нарушение Правил форума
[moder]Этот вопрос не имеет отношения к первоначальной теме. Создавайте новую[/moder]

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

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