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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2016, 21:08   #1
Vladsf
Новичок
Джуниор
 
Регистрация: 14.10.2016
Сообщений: 6
Радость Перенос страниц

Добрый день!
Стоит задача в цикле заполнить ячейки Excel данными. После того, как число строк превысит размер страницы- в следующую строку сначала записать шапку таблицы, затем данные.
Пробовал размер страницы контролировать в цикле рассчитывая через размер строки функцией
dlinawertlisttek:=dlinawertlisttek+ excel.activeworkbook.sheets.item['Лист1'].Rows[row_].RowHeight;
Проблема в том, что функция считает размер строки не обновляясь без учета размера заносимых в ячейку данных.
Кто подскажет, как решить проблему?
Vladsf вне форума Ответить с цитированием
Старый 14.10.2016, 21:14   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Параметры страницы - Лист - сквозные строки - не оно? А еще колонтитулы есть.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 14.10.2016, 21:16   #3
Vladsf
Новичок
Джуниор
 
Регистрация: 14.10.2016
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
Параметры страницы - Лист - сквозные строки - не оно? А еще колонтитулы есть.
А в коде можно посмотреть?
Vladsf вне форума Ответить с цитированием
Старый 14.10.2016, 21:18   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

лента Разметка страницы, группа параметры страницы, кнопка Печатать заголовки, есть возможность указать сквозные строки для распечатки на каждой сранице
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 14.10.2016, 21:20   #5
Vladsf
Новичок
Джуниор
 
Регистрация: 14.10.2016
Сообщений: 6
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
лента Разметка страницы, группа параметры страницы, кнопка Печатать заголовки, есть возможность указать сквозные строки для распечатки на каждой сранице
Я хотел сделать вставку шапки в цикле программы, вычисляя размер страницы и сравнивая с данными в параметрах страницы. Столкнулся с проблемой, что в цикле не успевает проходить обновление об изменении размера строки.
Vladsf вне форума Ответить с цитированием
Старый 14.10.2016, 21:31   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

есть такая проблема!
Excel в фоновом режиме и к сожалению довольно медленно определяет положение разделителей страниц(( это следует учитывать
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 14.10.2016, 21:38   #7
Vladsf
Новичок
Джуниор
 
Регистрация: 14.10.2016
Сообщений: 6
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
есть такая проблема!
Excel в фоновом режиме и к сожалению довольно медленно определяет положение разделителей страниц(( это следует учитывать
Очень хочется большой документ (страниц 50) вывести с шапкой на каждой странице. Может есть какие функции, которые контролируют, что размеры страницы превышены.
Vladsf вне форума Ответить с цитированием
Старый 14.10.2016, 21:46   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

почему же нет? есть на каждом листе HPageBreaks коллекция горизонтальных границ страниц. со всеми возможностями управлять положением разделителей страниц
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 14.10.2016, 23:18   #9
Vladsf
Новичок
Джуниор
 
Регистрация: 14.10.2016
Сообщений: 6
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
почему же нет? есть на каждом листе HPageBreaks коллекция горизонтальных границ страниц. со всеми возможностями управлять положением разделителей страниц
Пробовал организовать цикл
if row_=excel.Worksheets('Книга1').HPa geBreaks.Item('Лист1').Location.Row then begin;
Выдает ошибку не найден член группы.
Vladsf вне форума Ответить с цитированием
Старый 16.10.2016, 09:07   #10
Vladsf
Новичок
Джуниор
 
Регистрация: 14.10.2016
Сообщений: 6
По умолчанию

Добрый день!
Если кому интересно, то проблема решается просто двумя способами:
1.Способ привожу в коде
E.ActiveSheet.PageSetup.PrintTitleR ows:='$9:$9';
выводит на каждую страницу во время печати 9 строку, как шапку таблицы.
2. Способ работает после формирования табличного документа средствами Делфи. Далее провожу цикл поиска разделителей страниц и вставляю код шапки строки.
i:=1;
while I<>e.Worksheets.HPageBreaks.Count+ 1 do
begin
e.ActiveWindow.View:=2;
row_:=e.Worksheets.hPageBreaks.item[i].Location.Row;
e.Rows[Row_].Select;
e.Selection.Insert(Shift := xlDown);
col_:=1;
wyborcolexcel(col_);
setrange('Лист'+inttostr(nomerlist) , jcheikaexcel, 'N п/п');
col_:=2;
wyborcolexcel(col_);
setrange('Лист'+inttostr(nomerlist) , jcheikaexcel, 'Наименование средств измерения, тип');
col_:=3;
wyborcolexcel(col_);
setrange('Лист'+inttostr(nomerlist) , jcheikaexcel, 'Заводской номер');
col_:=4;
wyborcolexcel(col_);
setrange('Лист'+inttostr(nomerlist) , jcheikaexcel, 'Номер наклейки');
col_:=5;
wyborcolexcel(col_);
setrange('Лист'+inttostr(nomerlist) , jcheikaexcel, 'Кол-во шт.');
col_:=6;
wyborcolexcel(col_);
setrange('Лист'+inttostr(nomerlist) , jcheikaexcel, 'Вид средства изм.');
col_:=7;
wyborcolexcel(col_);
setrange('Лист'+inttostr(nomerlist) , jcheikaexcel, 'Межпов. интервал (мес.)');
col_:=8;
wyborcolexcel(col_);
setrange('Лист'+inttostr(nomerlist) , jcheikaexcel, 'Дата последней поверки*');
col_:=9;
wyborcolexcel(col_);
setrange('Лист'+inttostr(nomerlist) , jcheikaexcel, 'Месяц следующей поверки');
col_:=10;
wyborcolexcel(col_);
setrange('Лист'+inttostr(nomerlist) , jcheikaexcel, 'Сфера ГРОЕИ');
col_:=10;
wyborcolexcel(col_);
jcheikaexcel2:=jcheikaexcel;
col_:=1;
wyborcolexcel(col_);
e.activeworkbook.sheets.item['Лист1'].range[jcheikaexcel, jcheikaexcel2].select;
e.Selection.VerticalAlignment := xlCenter;
e.Selection.HorizontalAlignment := xlCenter;
e.ActiveWindow.View:=1; //1=xlNormalView
i:=i+1;
end;
Спасибо всем, кто откликнулся в решении вопроса.
Vladsf вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нумеровка страниц REztor Microsoft Office Word 2 05.03.2012 23:00
ИНКЛУД СТРАНИЦ KANDRAT PHP 2 28.06.2011 16:44
Количество страниц Dream Theatre HTML и CSS 0 10.07.2010 22:20
Слайдинг страниц drRobert JavaScript, Ajax 3 18.11.2009 17:40
Размер страниц terminadoor HTML и CSS 1 08.07.2009 20:56