Выгрузка в эксель несколько табличных документов

1. lic_avenger 10 10.01.17 15:58 Сейчас в теме
Всем привет!
Обычные формы.8.2
Получаю несколько печатных форм

если использовать ТабДок.Записать("путь к файлу", ТипФайлаТабличногоДокумента.XLS97);

то будет несколько файлов

есть какой то быстрый способ сохранить их в один экселевский документ?
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Boneman 298 10.01.17 16:03 Сейчас в теме
(1) выводите из все в один и тот же табличный документ. Одной портянкой. Соответственно и эксель получите одной портянкой, одно под другим.

А так, типовое сохранение табдока, подразумевает его сохранение на первый лист экселевской книги.
+
4. v3rter 11.01.17 09:36 Сейчас в теме
Ну или скидывать в одну папку и собирать макросом, как в https://www.extendoffice.com/documents/excel/456-combine-multiple-workbooks.html

Click Developer > Visual Basic, a new Microsoft Visual Basic for applications window will be displayed (or press Alt+F11), click Insert > Module
Sub GetSheets()
Path = "C:\Users\dt\Desktop\dt kte\"
Filename = Dir(Path & "*.xls*")
  Do While Filename <> ""
  Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
     For Each Sheet In ActiveWorkbook.Sheets
     Sheet.Copy After:=ThisWorkbook.Sheets(1)
  Next Sheet
     Workbooks(Filename).Close
     Filename = Dir()
  Loop
End Sub
Показать
Then click "play" button to run the code
марокко; +1
5. lic_avenger 10 11.01.17 12:40 Сейчас в теме
Вот мое творение :)

Процедура Кнопка1Нажатие(Кнопка)
		
		Режим = РежимДиалогаВыбораФайла.Сохранение;
		ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
		ДиалогОткрытияФайла.ПолноеИмяФайла = "";
		ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
		Текст = "ru = ""Таблица XLSX""; en = ""XLSX table""";
		Фильтр = НСтр(Текст)+"(*.XLSX)|*.XLSX";
		ДиалогОткрытияФайла.Фильтр = Фильтр;
		ДиалогОткрытияФайла.Заголовок = "Выберите путь для сохранения";
		Если ДиалогОткрытияФайла.Выбрать() Тогда
			ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;
		Иначе
			Текст = "Путь сохранения не выбран!";
			Предупреждение(Текст);
			Возврат;
		КонецЕсли;	
		
		Файл1 = ПолучитьИмяВременногоФайла("xlsx");
		Файл2 = ПолучитьИмяВременногоФайла("xlsx");
		Файл3 = ПолучитьИмяВременногоФайла("xlsx");
		Файл4 = ПолучитьИмяВременногоФайла("xlsx");
		
		Excel = Новый COMОбъект("Excel.Application");
		
		ЭлементыФормы.ДокументРезультат_Сокр.Записать(Файл1,ТипФайлаТабличногоДокумента.XLSX);
		ЭлементыФормы.РезультатДокументы.Записать(Файл2,ТипФайлаТабличногоДокумента.XLSX);
		ЭлементыФормы.РезультатАкты.Записать(Файл3,ТипФайлаТабличногоДокумента.XLSX);
		ЭлементыФормы.РезультатШтрафыПоОплате.Записать(Файл4,ТипФайлаТабличногоДокумента.XLSX);
		
		
		Книга1 = Excel.Workbooks.Open(Файл1);
		Книга2 = Excel.Workbooks.Open(Файл2);
		Книга3 = Excel.Workbooks.Open(Файл3);
		Книга4 = Excel.Workbooks.Open(Файл4);
		
		Лист1 = Книга1.WorkSheets(1);
		Лист2 = Книга2.WorkSheets(1);
		Лист3 = Книга3.WorkSheets(1);
		Лист4 = Книга4.WorkSheets(1);
		
		Книга = Excel.WorkBooks.Add();
		
		Лист1.Copy(Книга.Sheets(1));
		Книга.Sheets(1).Name = "Расчеты";	
		
		Лист2.Copy(Книга.Sheets(2));
		Книга.Sheets(2).Name = "Курсы";
		
		Лист3.Copy(Книга.Sheets(3));
		Книга.Sheets(3).Name = "Акты";
		
		Лист4.Copy(Книга.Sheets(4));
		Книга.Sheets(4).Name = "Штрафы";
		
		Excel.Worksheets("Лист1").Delete();
		Excel.Worksheets("Лист2").Delete();
		Excel.Worksheets("Лист3").Delete();
		
		Попытка
			Книга.SaveAs(ПутьКФайлу);
			Сообщить("Файл сохранен! "+ПутьКФайлу);
		Исключение
			Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
		КонецПопытки;
		
		Excel.Workbooks().Close();
		
		Excel.Application.Quit();
		
		УдалитьФайлы(Файл1);
		УдалитьФайлы(Файл2);
		УдалитьФайлы(Файл3);
		УдалитьФайлы(Файл4);
		
		
	КонецПроцедуры
Показать
+
3. марокко 73 11.01.17 07:21 Сейчас в теме
А если через Хранилище данных реализовать. Сохранить Лист Excel в хранилище ,создав уже нужное количество листов.
И при выгрузке просто указывать на какой лист загружать отчет.

У меня так выгрузки идут в Excel -шаблоны, только я выгружаю результат запроса и сразу массивом. Очень быстро идет загрузка, через COMSafeArray("VT_VARIANT", КоличествоКолонок, КоличествоСтрок);
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот