Каталог решений - Автоширина страницы в Excel через OLE

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

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

В наличии

Многие знают, как работать с 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»);

has been added to your cart:
Оформление заказа