AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.05.2007, 15:40   #21  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
Буду иметь ввиду. Теперь только осталось определить адрес этого pageBreak и добавлять туда итог
Спасибо за наводку.
Старый 02.05.2007, 15:48   #22  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от vasiliy Посмотреть сообщение
Теперь только осталось определить адрес этого pageBreak и добавлять туда итог
Копайте в сторону HPageBreak.Location. Возвращается объект Range, т.е. ячейка - НИЖЕ HPageBreak:
Цитата:
Location Property

For the HPageBreak and VPageBreak objects, this property returns or sets the cell (a Range object) that defines the page-break location. Horizontal page breaks are aligned with the top edge of the location cell; vertical page breaks are aligned with the left edge of the location cell. Read/write Range.
Старый 02.05.2007, 16:01   #23  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
Спасибо, как раз маялся с этим Location
Старый 02.05.2007, 16:22   #24  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
еще на заметку
Вот, доктора прямо английским по-белому пишут про GET.DOCUMENT(50):
How to determine how many pages will be printed in Excel

А вот это вообще круть - на формулах сделано:
Page Of Pages in a Cell

Во второй ссылке создаются вот такие имена с такими формулами (не связанными явно с ячейками!). Чтобы создать такие имена надо в Excel'е нажать Ctrl+F3 (или по меню: Вставить-Имя-Присвоить) и далее ввести в поле "Имя" то, что до двоеточия, а в поле "Формула" то, что после.

Для английской версии Excel:
RowAfterpgbrk : =GET.DOCUMENT(64)
TotPageCount : =GET.DOCUMENT(50)
PageOfPages : ="Page " & IF(ISNA(MATCH(ROW(),RowAfterpgbrk,1)),1,MATCH(ROW(),RowAfterpgbrk,1)+1)& " of " & TotPageCount + 0*NOW()
ThisPage : =IF(ISNA(MATCH(ROW(),RowAfterpgbrk,1)),1,MATCH(ROW(),RowAfterpgbrk,1)+1)

Для русской версии Excel:
RowAfterpgbrk: =ПОЛУЧИТЬ.ДОКУМЕНТ(64)
TotPageCount : =ПОЛУЧИТЬ.ДОКУМЕНТ(50)
PageOfPages : ="Page " & ЕСЛИ(ЕНД(ПОИСКПОЗ(СТРОКА(),RowAfterpgbrk,1)),1,ПОИСКПОЗ(СТРОКА(),RowAfterpgbrk,1)+1)& " of " & TotPageCount + 0*ТДАТА()
ThisPage : =ЕСЛИ(ЕНД(ПОИСКПОЗ(СТРОКА(),RowAfterpgbrk,1)),1,ПОИСКПОЗ(СТРОКА(),RowAfterpgbrk,1)+1)

Следуя указаниям второй ссылки создал свой примерчик с этими формулами. Посмотрите вложение (немножко подождите при открытии, чтобы пересчитались формулы). Посмотрите Print Preview. В общем, занятная штуковина...

Еще раз смысл происходящего: есть возможность выяснить при помощи формул, на какой лист при распечатке попадет та или иная строка листа Excel.
Вложения
Тип файла: xls PageOfPagesInCell.xls (20.5 Кб, 145 просмотров)
Старый 28.10.2007, 15:59   #25  
fedka is offline
fedka
Участник
 
69 / 15 (1) ++
Регистрация: 12.04.2007
Цитата:
Сообщение от Gustav Посмотреть сообщение
Вот, доктора прямо английским по-белому пишут про GET.DOCUMENT(50):
How to determine how many pages will be printed in Excel
Странно, этот подход у меня ни в какую не работает.
cv.double() - выдает 0
cv.toString() - выдает 0x800A07ED VT_ERROR

Если смотрю через макрос в экселе :
"MsgBox ExecuteExcel4Macro("GET.DOCUMENT(50)") & _
" pages will be printed."
- отрабатывает конечно... 0x800A07ED VT_ERROR
Старый 29.10.2007, 10:03   #26  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Может, у Вас какие-нибудь языковые проблемы типа как здесь? Может, надо по-русски ПОЛУЧИТЬ.ДОКУМЕНТ писать?
Старый 29.10.2007, 15:27   #27  
fedka is offline
fedka
Участник
 
69 / 15 (1) ++
Регистрация: 12.04.2007
Действитель, Вы правы. Главное вчера читал вашу ссылку, об этом думал, но пост выше моего "TotPageCount : =ПОЛУЧИТЬ.ДОКУМЕНТ(50)" не заметил ) Спасибо!
Старый 29.10.2007, 17:34   #28  
CDan is offline
CDan
Участник
 
23 / 10 (1) +
Регистрация: 17.11.2005
Цитата:
Сообщение от vasiliy Посмотреть сообщение
Как при выгрузке можно определить что достигнут конец страницы? Высота строк может быть разной, поэтому простой подсчет не подходит.
Была подобная задачка, поначалу тоже пробовал пользовать коллекцию HPageBreaks.
Но высота добавляемой строки с итогами может оказаться большей высоты последней строки страницы, и итоги вполне могут появиться в заголовке следующей.

Высота строки:
X++:
COMVariant  height;
COM            r = excelDocument.findRange("a1");

height = r.height();
info(int2str(height.double())
Используйте простой подсчет - это сильно, но Оккуратно

Последний раз редактировалось CDan; 31.10.2007 в 11:21.
Старый 30.10.2007, 19:01   #29  
AxCustomer is offline
AxCustomer
Участник
 
1 / 10 (1) +
Регистрация: 30.10.2007
Цитата:
Сообщение от CDan Посмотреть сообщение
Была подобная задачка, поначалу тоже пробовал пользовать коллекцию HPageBreaks.
Но высота добавляемой строки с итогами может оказаться большей высоты последней строки страницы, и итоги вполне могут появиться в заголовке следующей.
Зачем добавлять строку, если можно писать непосредственно в колонтитул страницы Excel? Допустим:
Worksheets(1).PageSetup.RightFooter = SumPage,
где SumPage = требуемое значение, вычисленное, например, при помощи HPageBreaks
Старый 31.10.2007, 09:27   #30  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от AxCustomer Посмотреть сообщение
Зачем добавлять строку, если можно писать непосредственно в колонтитул страницы Excel? Допустим:
Worksheets(1).PageSetup.RightFooter = SumPage,
где SumPage = требуемое значение, вычисленное, например, при помощи HPageBreaks
Не сильно много чего можно в колонтитул написать, а требуется, вроде, итоговая строка внизу каждой страницы со структурой, аналогичной структуре таблицы (т.е. ячейки, бордюрчики, цвет и т.п.).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
[Excel] - Несколько версий Excel на машине клиента Андре DAX: Программирование 11 07.08.2007 13:45
Вызов Item() для коллекций Excel Владимир Максимов DAX: Программирование 15 17.08.2006 19:47
Параметры страницы Excel через COM Sada DAX: Программирование 3 18.05.2006 10:30
Разрыв страницы в Excel Plushy DAX: Программирование 11 14.12.2005 09:39

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:05.