|
Выгрузка разных отчетов в один XLS файл на разные страницы | ☑ | ||
---|---|---|---|---|
0
Ctyd
06.08.14
✎
14:49
|
Нужно сделать регламентную задачу(это не проблема) для анализа состояния предприятия по дням.
отчеты отправляются каждый день не зависимо от пользователей. вариант: ТабДок.Записать("c:\1.xlsx", ТипФайлаТабличногоДокумента.XLSX); Главный офис требует все отчеты в 1 файле для анализа. куда нужно порыть что бы найти решение? |
|||
1
Garykom
гуру
06.08.14
✎
15:03
|
(0) кури маны и форум на способы записи в Excel напрямую и через всяческие извращения
|
|||
2
_fvadim
06.08.14
✎
15:11
|
Попробовать копировать табдок на нужные листы через COM.
Или лепить вместе после сохранения - можно из 1с через COM, можно внешним скриптом. |
|||
3
Лодырь
06.08.14
✎
15:14
|
например http://goo.gl/UGiO0S
|
|||
4
Лодырь
06.08.14
✎
15:21
|
Вкратце будет чтото типа того + какие то заморочки с тонкой настройкой результата:
ВременныйФайл = ПолучитьИмяВременногоФайла("xls"); ТабличныйДокументНовогоЛиста.Записать(ВременныйФайл, ТипФайлаТабличногоДокумента.XLS); ВременнаяКнига = Excel.WorkBooks.Open(ВременныйФайл); ЛистПолучатель = КнигаКудаВсеПопадает.WorkSheets(НомерТекущегоЛиста); ЛистОтправитель = ВременнаяКнига.WorkSheets(1); ЛистОтправитель.Copy(ЛистПолучатель, Null); ЛистПолучатель.name = "НекоеИмя"; |
|||
5
Jaap Vduul
06.08.14
✎
15:22
|
Пример для 7.7:
Таб=СоздатьОбъект("Таблица"); Для сч=1 По 3 Цикл Таб.Область(1,1).Текст="Привет от листа №"+сч; file[сч]="d:\test_"+сч+".xls"; Таб.Записать(file[сч],1); КонецЦикла; xl=createobject("excel.application"); wbMain=xl.workbooks.open(file[1]); wsMain=wbMain.worksheets(1); wsMain.name="Лист №1"; Для сч=-3 По -2 Цикл wbCopy=xl.workbooks.open(file[(-сч)]); wsCopy=wbCopy.worksheets(1); wsCopy.name="Лист №"+(-сч); wsCopy.copy(wsMain); wsMove=wbMain.worksheets(1); wsMain.move(wsMove); wbCopy.saved=1; wbCopy.close(); ФС.УдалитьФайл(file[(-сч)]); КонецЦикла; w=xl.activewindow; w.displayworkbooktabs=1; w.tabratio=0.5; wbMain.save(); xl.visible=1; |
|||
6
Repey
06.08.14
✎
15:25
|
Лодырь , а как в 2010 екселе сохранить в другой формат? В методе "SaveAs" когда в скобках делаешь второй параметр - оно ругается. В самом ВБА делается лишь через вот так:
ActiveWorkbook.SaveAs Filename:= "D:\Temp\MyBook.xls", FileFormat:=xlExcel8 но из 1С так записать тоже не выходит. |
|||
7
Tatitutu
06.08.14
✎
15:27
|
ДокЭксель = Новый COMОбъект("Excel.Application");
ДокЭксель.DisplayAlerts=0; ОбщаяКнига = ДокЭксель.WorkBooks.Open(ИмяОсновногоФайла); ЛистСДанными = ОбщаяКнига.Sheets(1); ЛистСДанными.Select(); ЛистСДанными.Name ="info"; Сч=1; Для каждого ПутьКФайлуXLS Из МассивПутейФайловXLS Цикл Книга = ДокЭксель.WorkBooks.Open(ПутьКФайлуXLS.Значение); ЛистСДанными = Книга.Sheets(1); ЛистСДанными.Select(); ИмяЛиста=СтрЗаменить(Книга.Name,СокрЛП(ПутьДляСохранения),""); ИмяЛиста=СтрЗаменить(ИмяЛиста,".xls",""); ЛистСДанными.Name =ИмяЛиста; ЛистСДанными.Copy(ОбщаяКнига.Sheets(Сч)); Сч=Сч+1; Книга.close(); КонецЦикла; ДокЭксель.ActiveWindow.TabRatio = 0.5; ЛистСДанными = ОбщаяКнига.Sheets(1); ЛистСДанными.Select(); ОбщаяКнига.Save(); ОбщаяКнига.close(); ДокЭксель.Quit(); ДокЭксель = Неопределено; Для каждого ПутьКФайлуXLS Из МассивПутейФайловXLS Цикл УдалитьФайлы(СокрЛП(ПутьКФайлуXLS.Значение)); КонецЦикла; ДокЭксель = Новый COMОбъект("Excel.Application"); ДокЭксель.WorkBooks.Open(ИмяОсновногоФайла); ДокЭксель.Visible = Истина; |
|||
8
Tatitutu
06.08.14
✎
15:29
|
+(7)
в папку программно формируешь свои отчеты. потом выбираешь все файлы (какой то делаешь основным) собираешь в один, записываешь - удаляешь все остальные. |
|||
9
Ctyd
06.08.14
✎
15:29
|
шикарно....
ЛистСДанными.Copy(ОбщаяКнига.Sheets(Сч)); Этот код автоматом создаст лист если его нету в файле?? |
|||
10
Tatitutu
06.08.14
✎
15:30
|
(10) все работает на 100% быстро и качественно
|
|||
11
Ctyd
06.08.14
✎
15:31
|
(10) спасибо огромное..
|
|||
12
Tatitutu
06.08.14
✎
15:32
|
(9) смысл этого кода - открываем файл и копируем его в ОСНОВНОЙ файл.
|
|||
13
Tatitutu
06.08.14
✎
15:33
|
(6)
ИмяОсновногоФайла=СокрЛП(ПутьДляСохранения)+"МОЙ НОВЫЙ ФАЙЛ "+ Строка(Формат(НачПериода,"ДФ=MMyyyy"))+".xls"; Сообщить(ИмяОсновногоФайла); ТабДок.Записать(ИмяОсновногоФайла,ТипФайлаТабличногоДокумента.XLS); |
|||
14
Ctyd
06.08.14
✎
15:35
|
(12) та я понял Спасибо=)
|
|||
15
Лодырь
06.08.14
✎
15:36
|
(6) у меня вполне прокатывает
КнигаВЭксель.SaveAs(ПутьКФайлу,56); |
|||
16
Repey
06.08.14
✎
15:47
|
(15) 2010? Он даже в вба на такую конструкцию ругается.
http://savepic.org/5837642.jpg |
|||
17
Лодырь
06.08.14
✎
15:49
|
(16) сейчас стоит 2013, до этого прошла серия предыдущих версий, код работает и насколько я помню этот кусок не модифицировался ) под рукой 2010 нет, проверить не могу.
|
|||
18
Jaap Vduul
06.08.14
✎
15:51
|
(16)
Синтаксис для VBA неправильный (при вызове метода без получения результата вызова, круглые скобки не нужны). |
|||
19
Repey
06.08.14
✎
15:54
|
(18) Каким тогда образом сохранить из 1С ексель файл в другом формате можно?
Вариант не работает (15) С параметром одним получается. Однако. |
|||
20
Лодырь
06.08.14
✎
15:56
|
(19) ошибку то какую выдает?
|
|||
21
Tatitutu
06.08.14
✎
16:20
|
(19) ТабДок.Записать(ИмяОсновногоФайла,ТипФайлаТабличногоДокумента.XLS);
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |