Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Re: Loexcel.Sheets(1).HPageBreaks(7).Location = .Range("A29") / 6 сообщений из 6, страница 1 из 1
01.10.2009, 08:36
    #36226613
Aklg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re: Loexcel.Sheets(1).HPageBreaks(7).Location = .Range("A29")
Доброе утро уважаемые гуру. Вопрос из VFP+Excel.
Реализую вывод в документ Excel, используя шаблон с сеткой в 17-строк, в конце заполнения одной страницы перехожу на другую и т.д., вот код для установки разрыва страницы и установка области печати.

*--- Установка разрыва страницы...
.Sheets(1).HPageBreaks.Add (Loexcel.Cells(NewStep+8,1))
*--- Установка области просмотра печати...
NewCels = ALLTRIM(STR(INT(NewStep+7)))
With .ActiveSheet.PageSetup
.PrintArea = "$A$1:$T$"+(NewCels)
.Zoom = 31
ENDWITH

ВНИМАНИЕ ВОПРОС!
Проблема в том что на некоторых компьютерах происходит автоматическое форматирование в результате чего у меня не срабатывает строчка кода
.Sheets(1).HPageBreaks.Add (Loexcel.Cells(NewStep+8,1))
перед ней становится еще одна строчка разрыва страницы получается что у меня между страницами появляется еще один лист который занимает в Excel 1 строку обрамленную сверху и с низу разрывами страницы, нижняя программно а верхняя,по всей видимости автоматическое форматирование...
Как можно исправить!???!
...
Рейтинг: 0 / 0
01.10.2009, 10:37
    #36226843
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re: Loexcel.Sheets(1).HPageBreaks(7).Location = .Range("A29")
Aklg,

Недавно что-то подобное было. Попробуйте сначала определить область печати, а потом расставить разрывы страниц.
...
Рейтинг: 0 / 0
01.10.2009, 11:10
    #36226928
AkIg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re: Loexcel.Sheets(1).HPageBreaks(7).Location = .Range("A29")
Kruchinin Pahan, спасибо.
Пробовал, не помогает. Эта ситуация возникает не у всех пользователей.
...
Рейтинг: 0 / 0
01.10.2009, 14:22
    #36227464
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re: Loexcel.Sheets(1).HPageBreaks(7).Location = .Range("A29")
AkIgKruchinin Pahan, спасибо.
Пробовал, не помогает. Эта ситуация возникает не у всех пользователей.
Значит, у принтера другие поля, или он иначе рендрит. Excel считает, что не влезет. Сделайте дополнительный запас по высоте для разных принтеров (можно, например, колонтитул уменьшить)

Когда я выгружал транспортную накладную в Excel я делал так:
1. Выставлял масштаб 105%
2. Пробегался по автоматическим переносам страниц и перед каждым переносом вставлял строчку с итогами по странице
3. Масштабировал обратно под 100%
4. Добавлял ручные переносы страниц, сразу за строчками с итогами

Масштабы подбиралась индивидуально для каждого типа отчетов.
...
Рейтинг: 0 / 0
02.10.2009, 11:08
    #36229042
Aklg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re: Loexcel.Sheets(1).HPageBreaks(7).Location = .Range("A29")
Kruchinin Pahan
.......
Когда я выгружал транспортную накладную в Excel я делал так:
1. Выставлял масштаб 105%
2. Пробегался по автоматическим переносам страниц и перед каждым переносом вставлял строчку с итогами по странице
3. Масштабировал обратно под 100%
4. Добавлял ручные переносы страниц, сразу за строчками с итогами
.......

Извините, а можно по подробней. Мне понятна логика Вашей мысли, однако пункт 2 "Пробегался по автоматическим переносам страниц..." - как можно программно (команда, функция Excel) реализовать эту операцию.
...
Рейтинг: 0 / 0
02.10.2009, 12:59
    #36229432
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re: Loexcel.Sheets(1).HPageBreaks(7).Location = .Range("A29")
AklgKruchinin Pahan
.......

Извините, а можно по подробней. Мне понятна логика Вашей мысли, однако пункт 2 "Пробегался по автоматическим переносам страниц..." - как можно программно (команда, функция Excel) реализовать эту операцию.

HPageBreaks это коллекция, поэтому оно нормально перебирается как обычная коллекция.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
		lnMaxBreaks = Sch.HPageBreaks.Count
		IF lnMaxBreaks >  0 
			DIMENSION laPgB (lnMaxBreaks)
			FOR m.i =  1  TO lnMaxBreaks
				laPgb[m.i] = Sch.HPageBreaks[m.i].Location.Row
			NEXT && m.i
		ENDIF
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Re: Loexcel.Sheets(1).HPageBreaks(7).Location = .Range("A29") / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]