Вход | Регистрация


Как три ТабДокумент выгрузить в ексель на три листа ?

Как три ТабДокумент выгрузить в ексель на три листа ?
Я
   lamme
 
18.04.17 - 09:38
Вопрос в теме ..
Кто ниб сталкивался?

(вариант - сохранить отдельно в ексель и потом копировать-вставить в один - не предлагать. Один из табдокументов - огромный и 1С умирает со словами - не хватает памяти. Именно - при открытии файла и его копировании в буфер)
 
 
   1dvd
 
1 - 18.04.17 - 09:39
через ексель.аппликейшн
   lodger
 
2 - 18.04.17 - 09:41
Excel = Новый COMОбъект("Excel.Application");
а дальше курить маны экселя. там функций и методов пара-тройка десятков.
открыть лист, заполнить построчно, и два других так же. ничего из оперативки не крякнется просто так, если отдать команду на сохранение.
   lamme
 
3 - 18.04.17 - 09:43
афигеть .. сначала заполняем табдок
потом заполняем ексель на основе табдок
?
   lamme
 
4 - 18.04.17 - 09:45
пытался сделать так

Попытка
    Эксель  = Новый COMОбъект("Excel.Application");
    Эксель2  = Новый COMОбъект("Excel.Application");

Исключение
    Предупреждение("ОШИБКА создания приложения Excel, возможно программа не установлена!");
КонецПопытки;

ПутьКФайлу ="C:\Users\Home\Desktop\тмп\док1.xls";
Книга = Эксель.WorkBooks.Open(ПутьКФайлу);



ПутьКФайлу2 ="C:\Users\Home\Desktop\тмп\док2.xls";
Книга2 = Эксель2.WorkBooks.Open(ПутьКФайлу2);
Лист2 = Книга2.WorkSheets(1);// Выбор первого листа.


   Книга2.Application.Sheets(1).Cells.Select();
   Эксель2.Selection.Copy();       

   
   
Лист = Книга.WorkSheets.Add();
Лист.Name = "лист ++";

 
            Эксель.DisplayAlerts = 0;
      //  Попытка    

            Лист.Paste(); 
            



Книга.SaveAs("C:\Users\Home\Desktop\тмп\док123.xls");
Эксель.Application.Quit(); 



так дома работает
но дома были файлы с листами руками сделанные.
на работе - нет. табдок сохраняется в ексель. листа нет. и все .. не работает.
или не работает по иной причине ..
яхз
   Остап Сулейманович
 
5 - 18.04.17 - 09:45
(3) Разрешаю "Табдок" не заполнять. Заполнять напрямую книгу Ексель.
   lodger
 
6 - 18.04.17 - 09:47
(5) +1. зачем вам табдок?
   lamme
 
7 - 18.04.17 - 09:48
а есть пример заполнения ексель напрямую ?
   Остап Сулейманович
 
8 - 18.04.17 - 09:48
(4) Вместо 
Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
писать
Книга = Эксель.WorkBooks.Add(ПутьКФайлу);

Затем 
Для поз = 1 По 10 Цикл
  Лист = Книга.WorkSheets.Add();//в справке посмотреть параметры

КонецЦикла;
   lamme
 
9 - 18.04.17 - 09:49
табдок - это типа с него началось. потом аппетиты выросли. потом еще придумали ...
табдок остался
и при этом хотят в три листа в одном документе
   lodger
 
10 - 18.04.17 - 09:51
(9) ну поставь параметр ВыводитьТабДокИлиЭксель. и в зависимости от него работай с макетами и табдоками или с экселем.
 
 Рекламное место пустует
   Йохохо
 
11 - 18.04.17 - 09:52
а если просто скопировать лист из файла в текущий?
   lamme
 
12 - 18.04.17 - 09:53
(11)
в (4) код
не хочет он работать ..
   Остап Сулейманович
 
13 - 18.04.17 - 09:53
(11) Стесняюсь спросить - это о программном заполнении? Или руцями?
   shadow_sw
 
14 - 18.04.17 - 09:54
    Файл = Новый COMОбъект("Excel.Application");    
    ФСО = Новый COMОбъект("Scripting.FileSystemObject");
    
    ПутьКниги =КаталогВременныхФайлов()+"Основа.xls";
    СписокФайлов = Новый ТаблицаЗначений;
    СписокФайлов.Колонки.Добавить("Путь");
    НС = СписокФайлов.Добавить();
    НС.Путь =КаталогВременныхФайлов()+"РазОтчет.xls";
    НС = СписокФайлов.Добавить();
    НС.Путь =КаталогВременныхФайлов()+"ДваОтчет.xls";
    НС = СписокФайлов.Добавить();
    НС.Путь =КаталогВременныхФайлов()+"ТриОтчет.xls";

    
    
    Файл.Visible = 0;    
    Файл.DisplayAlerts = 0;
    Попытка                          
        Книга = Файл.Workbooks.Open(ПутьКниги);
    Исключение
        Книга = Файл.Workbooks.Add();
        Книга.SaveAs(ПутьКниги);
    КонецПопытки;
    
    Для Каждого ФайлЛиста Из СписокФайлов Цикл
        НовоеИмяЛиста = ФСО.GetBaseName(ФайлЛиста.Путь);
        
        Попытка                          
            Лист = Файл.Workbooks.Open(ФайлЛиста.Путь);
        Исключение
            Продолжить;
        КонецПопытки;
        Если ФайлЛиста.Путь =КаталогВременныхФайлов()+"РазОтчет.xls" Тогда 
            Лист.Worksheets(1).Name  = "РазОтчет";
            Лист.Worksheets(1).Copy(Книга.Worksheets(1));
            Лист.Close(0);
        КонецЕсли;    
        Если ФайлЛиста.Путь =КаталогВременныхФайлов()+"ДваОтчет.xls" Тогда 
            Лист.Worksheets(1).Name  = "ДваОтчет";
            Лист.Worksheets(1).Copy(Книга.Worksheets(1));
            Лист.Close(0);
        КонецЕсли;
            Если ФайлЛиста.Путь =КаталогВременныхФайлов()+"ТриОтчет.xls" Тогда 
            Лист.Worksheets(1).Name  = "ТриОтчет";
            Лист.Worksheets(1).Copy(Книга.Worksheets(1));
            Лист.Close(0);
        КонецЕсли;    

        
       Книга.Save();
    КонецЦикла;
    
    Книга.Save();
    Книга.Close(-1);
    Файл = 0;

держи, 500 руб на счет мисты
   Остап Сулейманович
 
15 - 18.04.17 - 09:56
(12) В (4) код заточен под :
1. Файл эксель уже существует.
2. Один лист уже есть.

3. Вот это вот :
   Лист = Книга.WorkSheets.Add();
   Лист.Name = "лист ++";
- в топку. Каждый лист должен иметь уникальное имя.
   lamme
 
16 - 18.04.17 - 10:04
(14)
это раюботает - если в исходной книге есть листы
а если их нет - то не работает
   lodger
 
17 - 18.04.17 - 10:07
(16) ну ясен красен. код под это и заточен. переписывайте заново и будет все работать под чистый документ.
   rabbidX
 
18 - 18.04.17 - 14:21
Если ПерваяСтраница Тогда 
                Лист = Книга.ActiveSheet;
                ПерваяСтраница = Ложь;
            Иначе 
                Лист= Книга.Sheets.Add();
            КонецЕсли;

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует