gifts2017

Автоширина страницы в Excel через OLE

Опубликовал Александр Маляев (maljaev) в раздел Программирование - Практика программирования

Многие знают, как работать с Excel по OLE, но не все знают, как выставить автоширину страницы Excel из 1С.

Все нижесказанное относится к 1С 7.7. Насчет 1С 8.х зарекаться не буду, пока сам не попробую.

В общем, предположим что у нас через OLE открыта (или создана) Excel-книга, определен текущий лист. Тогда можно установить параметры страницы для текущего листа следующим образом:

ПараметрыСтраницы=Excel.ActiveSheet.PageSetup;
ПараметрыСтраницы.LeftMargin=28.35; // 10мм
ПараметрыСтраницы.RightMargin=28.35; // 10мм
ПараметрыСтраницы.TopMargin=28.35; // 10мм
ПараметрыСтраницы.BottomMargin=28.35; // 10мм
ПараметрыСтраницы.CenterHorizontally=1; // центрируем по горизонтали например
ПараметрыСтраницы.CenterVertically=0;
ПараметрыСтраницы.Orientation=2; // ландшафтная ориентация
ПараметрыСтраницы.PaperSize=9; // лист А4
ПараметрыСтраницы.FitToPagesWide=1; // вмещать на один лист по ширине
ПараметрыСтраницы.FitToPagesTall=1000; // по высоте ограничим 1000 листами (можно и увеличить).

Но вот тут мы столкнемся с одной маленькой но неприятной сложностью. Нам нужно установить:

ПараметрыСтраницы.Zoom=0; // то есть типа "ложь", для того чтобы начали действовать параметры "FitToPages"

Но в результате наталкиваемся на ошибку выполнения метода. А все потому что свойство "Zoom" имеет тип "Variant" и из 1С невозможно напрямую установить свойство данного типа. Поэтому выкручиваемся следующим способом:

Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
Скрипт.Language="javascript";
Скрипт.AddObject("ПараметрыСтраницы",ПараметрыСтраницы);
Скрипт.Eval("ПараметрыСтраницы.Zoom=False");

См. также

Подписаться Добавить вознаграждение

Комментарии

12. valent (valent) 09.09.12 19:34
Спасибо!
а можно еще так:
Устанавливается в сантиметрах (наглядно)
ПараметрыСтраницы.LeftMargin = Эксель.Application.CentimetersToPoints(2);
ПараметрыСтраницы.RightMargin = Эксель.Application.CentimetersToPoints(1.7);
ПараметрыСтраницы.TopMargin = Эксель.Application.CentimetersToPoints(1);
ПараметрыСтраницы.BottomMargin = Эксель.Application.CentimetersToPoints(1);
ну и + еще
Колонтитулы:
ПараметрыСтраницы.RightHeader = "Стр. &P из &N";
ч/б печать:
ПараметрыСтраницы.BlackAndWhite = 1;
13. Тимур Муртазаев (Tilirxs) 17.11.15 18:49
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа