Быстрая выгрузка отчетов в Excel, наложение Фильта и отображение ярлыка Вместо Таб.Показать() используем глобальную функцию - и отчет показывается сразу в Excel в удобоваримом виде - с форматированием колонок по ширине, автофильтром и ярлычками листов
Код 1C v 7.x Процедура глОткрытьВЭкселе(Таб,ИмяФайла="",НеИзменятьВысотуСтроки=0) Экспорт
Попытка
// запускаем Excel-Server
Excel = СоздатьОбъект("Excel.Application");
Исключение
Excel = 0;
Предупреждение("MS Excel не загружен!");
Возврат;
КонецПопытки;
Если ТипЗначенияСтр(Таб)="Строка" Тогда
Excel.WorkBooks.Open(Таб);
Иначе
Если НеИзменятьВысотуСтроки=0 Тогда
ШиринаТаблицы=Таб.ШиринаТаблицы();
Область=Таб.Область(1,1,Таб.ВысотаТаблицы(),ШиринаТаблицы);
Область.ВысотаСтроки(12);
КонецЕсли;
Если Найти(ИмяФайла,":")=0 Тогда
ИмяФайла=КаталогПользователя()+ИмяФайла;
КонецЕсли;
Если Найти(Врег(ИмяФайла),"XLS")=0 Тогда
ИмяФайла=ИмяФайла+".xls";
КонецЕсли;
Таб.Записать(?(ПустоеЗначение(ИмяФайла)=0,ИмяФайла,КаталогПользователя()+"Таблица.xls"),"XLS");
Excel.WorkBooks.Open(ИмяФайла);
Excel.Visible = 0;
//добавляем автофильтр и форматирование колонок по ширине
Excel.Columns.AutoFit();
Range = Excel.Range(Excel.Cells(1, 1), Excel.Cells(1, ШиринаТаблицы));
Range.S_elect();
Range.AutoFilter ();
//показываем вечно прячущиеся ярлычки листов
Excel.ActiveWindow.DisplayWorkbookTabs = -1;
Excel.ActiveWindow.TabRatio = 0.25;
КонецЕсли;
Excel.Visible=1;
Excel=0;
КонецПроцедуры
mikukrnet Категория:
Работа с Microsoft Office и OpenOffice Как установить фильтр в Excel при открытии файла в таблице должен стоять фильтр с заданными параметрами:
получить все товары у которых количество равно 11
Код 1C v 8.х
Ехсел.Range("C5:D5").AutoFilter (); //создаем автофильт
Ехсел.Range("C5:D5").AutoFilter (2,"11"); //указаваем столбец и значение фильтр
Категория:
Работа с Microsoft Office и OpenOffice Как в Excel сделать кнопку с макросом Код 1C v 8.х
Отчет = РабочиеКниги.Open(Каталог+Названиефайла);
ОтЛевогоКрая=550;
ОтВерха=80;
Длина=100;
Высота=50;
кн = Отчет.Sheets(1).OLEObjects.Add("Forms.CommandButton.1",,,,,,,ОтЛевогоКрая, ОтВерха, Длина,Высота);
st = "Private Sub CommandButton1_Click()" + Chr(13) + " ThisWorkbook.Sheets(1).range(""I10:I10000"").AutoFilter Field:=1, Criteria1:="">0"", Operator:=xlAnd" + Chr(13) + "End Sub";
Excel.VBE.ActiveVBProject.VBComponents.Add (1);
Excel.VBE.ActiveVBProject.VBComponents.Item(1).CodeModule.I_nsertLines (1,st);
в переменную st записываем нужный нам макрос. У меня в процедуре он выводиться в одной строке, но можно сделать чтобы он выводился построчно
Код 1C v 8.х
Excel.VBE.ActiveVBProject.VBComponents.Item(1).CodeModule.I_nsertLines (1,st1);
Excel.VBE.ActiveVBProject.VBComponents.Item(1).CodeModule.I_nsertLines (2,st2);
в этом макросе делается фильтр по колонке > 0
Категория:
Работа с Microsoft Office и OpenOffice