Автоширина страницы в 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»);

