Хочу чтобы при печати таблица Excel влезла на одну страницу. Делаю так:
xl.ActiveSheet.PageSetup.LeftMargin=0.5;
xl.ActiveSheet.PageSetup.RightMargin=0.5;
xl.ActiveSheet.PageSetup.Orientation=2; //xlLandscape
xl.ActiveSheet.PageSetup.FitToPagesWide=1;
xl.ActiveSheet.PageSetup.Zoom=0; //Здесь пишет ошибку:
xl.ActiveSheet.PageSetup.Zoom=0;
{D:\ЛИФТЫ1\EXTFORMS\РАСШИФРОВКАСИГНАЛОВ.ERT(118)}: Microsoft Excel: Нельзя установить свойство Zoom класса PageSetup
В макрорекордере это выглядит как .Zoom=False
Кто-нибудь сталкивался, и как это можно вылечить?
В таблицах MXL все с этим нормально, а в Ёкселе как всегда лезут непонятные траблы...
В EXCEL свойство PageSetup.ZOOM имеет тип Variant и воспринимает 0 как пустое значение, а не как логическое False. 1С значение False непосредственно передать через OLE не может.
У меня проблема решена следующим образом:
- в отдельной книге EXCEL стр.xls написал макрос Макрос1:
sub Макрос1()
ActiveSheet.PageSetup.Zoom = False
end sub
Для вызова макроса методом RUN книга с макросом должна быть открыта до открытия обрабатываемых книг:
Макрос=Эксель.Workbooks.Open(КаталогИБ()+"стр.xls");
Для масштабирования активного листа при печати используется метод RUN:
Эксель.RUN("стр.xls!Макрос1");
После окончания обработки книга с макросом закрывается:
Макрос.Close();
Пока других вариантов решения описанной проблемы не нашел
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший