• 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

Разгруппировка Строк В Excel Средствами Openoffice(vba)

  • Автор темы Автор темы Manticor
  • Дата начала Дата начала
M

Manticor

Доброго времени суток. Нужно при выгрузке табличного документа в Excel средтсвами openOffice убрать группировки строк.
Код такой:
Код:
&НаСервере
Процедура УстановитьПараметрыСтраницы(ИмяВременногоФайла, ТабДокумент)

Попытка
ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
Исключение
Сообщить("Ошибка при связи с сервис менеджером (com.sun.star.ServiceManager)." + 
+ Символы.ПС + ОписаниеОшибки());
Возврат;		
КонецПопытки;

Попытка
Desktop = ServiceManager.CreateInstance("com.sun.star.frame.Desktop");
Исключение
Сообщить("Ошибка при запуске сервиса Desktop (com.sun.star.frame.Desktop).'" + 
+ Символы.ПС + ОписаниеОшибки());
Возврат; 
КонецПопытки;

#Если ВебКлиент Тогда
scr = Новый COMОбъект("MSScriptControl.ScriptControl");
scr.language = "javascript";
scr.eval("Massiv=new Array()");
scr.AddObject("ServiceManager",ServiceManager);

scr.eval("Massiv[0]=ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
scr.eval("Massiv[0].Name='Hidden'");
scr.eval("Massiv[0].Value=true");

Парам = scr.eval("Massiv");
#Иначе
Парам = Новый COMSafeArray("VT_DISPATCH", 1);
#КонецЕсли

#Если Не ВебКлиент Тогда
Парам.SetValue(0, СвойствоЗначение(ServiceManager, "Hidden", Истина));
#КонецЕсли

Document = Desktop.LoadComponentFromURL(ПреобразоватьВURL(ИмяВременногоФайла), "_blank", 0, Парам);

#Если ВебКлиент Тогда
Document.getCurrentController().getFrame().getContainerWindow().setVisible(Ложь);
#КонецЕсли

Document.lockControllers();
Document.addActionLock();

Sheets=Document.getSheets();
Sheet=Sheets.getByIndex(0);

СтилиСтраницы =Document.StyleFamilies.getByName("PageStyles");
Для поз = 0 по СтилиСтраницы.count - 1 Цикл
МойСтиль = СтилиСтраницы.getByIndex(поз);
МойСтиль.ScaleToPagesX = 1; 
//МойСтиль.PageScale = 100;
КонецЦикла;

ПараметрыСтраницы=СтилиСтраницы.getByName(Sheet.PageStyle);

//Установка полей
ПараметрыСтраницы.LeftMargin  = ТабДокумент.ПолеСлева * 100;
ПараметрыСтраницы.RightMargin = ТабДокумент.ПолеСправа * 100;
ПараметрыСтраницы.TopMargin	= ТабДокумент.ПолеСверху * 100;
ПараметрыСтраницы.BottomMargin = ТабДокумент.ПолеСнизу * 100;

//Установка ориентации
Если ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт Тогда
ПараметрыСтраницы.IsLandscape = Истина;
ПараметрыСтраницы.Width = 29700;
ПараметрыСтраницы.Height = 21000;
Иначе
ПараметрыСтраницы.IsLandscape = Ложь;
ПараметрыСтраницы.Width = 21000;
ПараметрыСтраницы.Height = 29700;
КонецЕсли;

//Установка масштаба печати
//Если ТабДокумент.МасштабПечати <> Неопределено Тогда
//  ПараметрыСтраницы.PageScale = ТабДокумент.МасштабПечати;
//КонецЕсли; 

//Сохранение документа
Document.unlockControllers();
Document.removeActionLock();

Попытка
Document.Store();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;

Document.Close(Истина);

//Отключаем COM - соединение
Desktop.terminate();

КонецПроцедуры

В самом докумете опен офиса сделал макрос, который при скрытии группировки выдает такой код:

Код:
sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document  as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document  = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "RowOrCol"
args1(0).Value = "R"

dispatcher.executeDispatch(document, ".uno:Ungroup", "", 0, args1())

end sub

Также на данном форуме наткнулся на тему, где делали копирование и выделение как то подобно:
link removed

Помогите плиз понять - что нужно добавить в коде в 1с, чтобы группировки убирались? Пробовал так:

dispatcher = ServiceManager.createInstance("com.sun.star.frame.DispatchHelper"); //компанента для копирования
dispatcher.executeDispatch(Document.CurrentController.Frame, ".uno:Ungroup", "", 0, Парам);//разгруппировать

//Сохранение документа
Document.unlockControllers();
Document.removeActionLock();
Ничего не меняется.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD