Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2009, 15:41   #1
Screame
Форумчанин
 
Аватар для Screame
 
Регистрация: 27.05.2009
Сообщений: 170
Восклицание добавление страниц

Есть база данных из которой берутся определенные данные при вводе артикула. В файле три страници, первая заглавная, вторая последовательная, третья последняя. Тут возникает проблема, потомучто между между первой и последней таблицей может быть не 1 стр. а 50 в зависимости от базы данных. Так вот мне хотелось бы както автоматизировать процес добавление страницы вместе с таблицей как на стр. 2. Что можно для этого зделать?
Вложения
Тип файла: rar ревиз.rar (179.9 Кб, 14 просмотров)
Screame вне форума Ответить с цитированием
Старый 27.05.2009, 15:54   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
первая заглавная, вторая последовательная, третья последняя
Хорошо сказано

Цитата:
автоматизировать процес добавление страницы вместе с таблицей как на стр. 2
Сделать это совсем несложно.
Вот только я не понял, какой диапазон ячеек какого листа Вы называете таблицей...
И куда добавлять эту "страницу"? На новый лист, или в конец страницы на одном из листов?

Лучше сделайте шаблон таблицы на отдельном листе, чтобы макрос просто брал с этого листа некоторый диапазон ячеек (к примеру, A1:H55), и копировал в нужное место (или на новый лист)

Чем подробнее опишите, что и куда копировать, тем быстрее получите готовое решение.
EducatedFool вне форума Ответить с цитированием
Старый 27.05.2009, 20:16   #3
Screame
Форумчанин
 
Аватар для Screame
 
Регистрация: 27.05.2009
Сообщений: 170
По умолчанию

Объясняю, нужно чтобы после стр. 2 (под ней), вставлялась новая страница, а потом на нее накладывалась точно такая же таблица, как на странице 2, (диапазон на странице A71:I130). Ну и соотвественно формулы которые в ней уже находятся никуда неделись. Если еще чтото непонятно, тогда спрашивайте!!! Заранее спасибо!
Screame вне форума Ответить с цитированием
Старый 27.05.2009, 21:03   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот весь код:
Код:
Sub Main()
    Application.ScreenUpdating = False: Application.DisplayAlerts = False
    Application.Calculation = xlCalculationManual

    Dim ra As Range: Set ra = [таблица]
    Dim sh As Worksheet: Set sh = ThisWorkbook.Worksheets("ревізія")
    sh.Activate: ActiveWindow.View = xlPageBreakPreview
    Dim newra As Range: Set newra = sh.HPageBreaks(1).Location.Resize(ra.Rows.Count, ra.Columns.Count)
    newra.EntireRow.Insert: Set newra = sh.HPageBreaks(1).Location.Resize(ra.Rows.Count, ra.Columns.Count)
    ra.Copy: newra.PasteSpecial xlPasteAll

    For i = 1 To ra.Rows.Count
        newra.Rows(i).RowHeight = ra.Rows(i).RowHeight
    Next i
    Set sh.HPageBreaks(2).Location = newra.Cells(newra.Cells.Count).EntireRow.Cells(1).Offset(1)

    Application.ScreenUpdating = True: Application.DisplayAlerts = True
    Application.Calculation = xlCalculationAutomatic
End Sub
Выполняется макрос очень долго - около 10 секунд, но с этим я ничего не могу поделать (всё из-за пересчёта Ваших формул, без них вставка новой страницы осуществлялась бы моментально)

Возможно, если убрать часть формул (или подправить существующие), проблема с длительным пересчётом исчезнет (у меня нет времени разбираться, что, где и как считается в Вашем файле)

На листе Шаблон есть зелёная кнопка. Нажмите её.
Новая страница всегда добавляется перед страницей 2.
Если надо, чтобы новая страница добавлялась ниже страницы2, попробуйте увеличить все красные цифры в коде на единицу.
Вложения
Тип файла: rar ревизия2.rar (228.1 Кб, 20 просмотров)
EducatedFool вне форума Ответить с цитированием
Старый 27.05.2009, 21:13   #5
Screame
Форумчанин
 
Аватар для Screame
 
Регистрация: 27.05.2009
Сообщений: 170
По умолчанию

да, все работает, спасибо большое, но вот только одна проблема как изменить макрос чтобы страница вставлялась не перед предыдущей, а опосля нее, возможно ли это зделать?
Screame вне форума Ответить с цитированием
Старый 27.05.2009, 21:16   #6
pivas
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 412
По умолчанию

Screame, внимательно читаем предыдущий пост:
Если надо, чтобы новая страница добавлялась ниже страницы2, попробуйте увеличить все красные цифры в коде на единицу.
pivas вне форума Ответить с цитированием
Старый 27.05.2009, 21:21   #7
Screame
Форумчанин
 
Аватар для Screame
 
Регистрация: 27.05.2009
Сообщений: 170
По умолчанию

извините, просто спешил и недочитал до конца!!!
Screame вне форума Ответить с цитированием
Старый 27.05.2009, 21:49   #8
Screame
Форумчанин
 
Аватар для Screame
 
Регистрация: 27.05.2009
Сообщений: 170
По умолчанию

я уже наверное запарил Вас, но у меня еще один вопрос, можно ли зделать так чтобы страницы добавлялись последовательно одна за другой, потомучто в примере после второй вставляется третья, при следующим нажатии третья здвигается вниз, над ней вставляется новая???
Screame вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
счетчик страниц Bogood Помощь студентам 2 07.03.2009 21:44
Нумерация страниц Александр Microsoft Office Word 3 09.01.2009 14:22
нумерация страниц chern Microsoft Office Word 3 10.05.2008 14:06
Сэйв HTML страниц... Black DeviL Общие вопросы Delphi 3 21.02.2008 21:45
Эскизы страниц Mitron Общие вопросы Delphi 1 10.02.2008 23:16