Создаю файл Excel через 1С. Все ОК. Задал область печати с 5 по нужный столбец. Но эта область не помещается на 1 странице. Нужно удалить вертикальные разрывы страницы. В Excel руками удалить просто. Заходишь в страничный режим (Вид - Страничный режим) и двигаешь разрывы (они нарисованы пунктиром). Пробовал удалить разрывы так:
КоличествоРазрывов = Лист.VPageBreaks.Count;
Попытка
Для Индекс = 1 По КоличествоРазрывов Цикл
ТекущийИндекс = КоличествоРазрывов - Индекс + 1;
Лист.VPageBreaks.Item(ТекущийИндекс).Delete();
КонецЦикла;
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Показать
Или так:
КоличествоРазрывов = Лист.VPageBreaks.Count;
Попытка
Для Индекс = 1 По КоличествоРазрывов Цикл
ТекущийИндекс = КоличествоРазрывов - Индекс + 1;
Лист.VPageBreaks(ТекущийИндекс).Delete();
КонецЦикла;
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Показать
В ошибку не выходит, по отладке проходит, но и разрывы остаются.
Если записать макрос и убрать руками разрывы, VBA выдает такой код:
ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
Значит этот код можно засунуть в 1С. НО как это сделать?
Описание метода DragOff() - https://learn.microsoft.com/en-us/office/vba/api/excel.hpagebreak.dragoff Описание первого параметра метода XlDirection - https://learn.microsoft.com/en-us/office/vba/api/excel.xldirection Пробовал передавать в параметр и строку "xlToRight", и строку "Direction:=xlToRight", и числовое значение -4161 и т. д. Все вываливается в исключение.
Ошибка: ошибка при вызове контекста DragOff. Дале либо типы не совпадают, либо произошла исключительная ситуация.
Перебрал все возможные варианты в цикле. Все выпало в исключения.
Массив1 = Новый Массив;
Массив1.Добавить("");
Массив1.Добавить("xlToRight");
Массив1.Добавить("Direction:=xlToRight");
Массив1.Добавить(-4161);
Массив1.Добавить("-4161");
Массив1.Добавить("xlToLeft");
Массив1.Добавить("Direction:=xlToLeft");
Массив1.Добавить(-4159);
Массив1.Добавить("-4159");
Массив1.Добавить("xlUp");
Массив1.Добавить("Direction:=xlUp");
Массив1.Добавить(-4162);
Массив1.Добавить("-4162");
Массив1.Добавить("xlDown");
Массив1.Добавить("Direction:=xlDown");
Массив1.Добавить(-4121);
Массив1.Добавить("-4121");
Массив2 = Новый Массив;
Массив2.Добавить("");
Массив2.Добавить(1);
Массив2.Добавить("1");
Массив2.Добавить("RegionIndex:=1");
Для каждого Стр1 Из Массив1 Цикл
Для каждого Стр2 Из Массив2 Цикл
Попытка
Лист.VPageBreaks(1).DragOff(Стр1, Стр2);
а = 1;
Исключение
Сообщить("Стр1 " + Стр1 + " Стр2 " + Стр2 + " - " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
КонецЦикла;
(2)Ясно, но через Delet() я тоже пробовал. Писал об этом выше. Ошибку не дает, но и разрывы не удаляет.
Попробовал еще не удалять, а поменять расположение разрыва:
Попытка
Лист.VPageBreaks.Item(2).Location = Лист.Range("AD1");
Лист.VPageBreaks.Item(1).Location = Лист.Range("AD1");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Попытка
Лист.VPageBreaks(2).Location = Лист.Range("AD1");
Лист.VPageBreaks(1).Location = Лист.Range("AD1");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Показать
В ошибку не уходит, но и разрыв не меняется. По отладчику проходишь, в момент исполнения кода видно что адрес разрыва не меняется.
Лист.VPageBreaks.Item(1).Location.Address как был равен "$L$1" так и остался. Не понятно, почему ничего не происходит. Тупо не работает и все, хоть бы ошибку дал.