1. lic_avenger 10 10.01.17 15:58 Сейчас в теме

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

Всем привет!
Обычные формы.8.2
Получаю несколько печатных форм

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

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

есть какой то быстрый способ сохранить их в один экселевский документ?
Ответы
Избранное Подписка Сортировка: Древо
2. Boneman 183 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", КоличествоКолонок, КоличествоСтрок);
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы интеграций (1С)
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы сервисов FRM на 1С
Москва
зарплата от 150 000 руб.
Полный день

Консультант-аналитик 1С (ЗУП)
Санкт-Петербург
Полный день