Имя: Пароль:
1C
 
Как выгрузить отчет в лист Excel в существующей книге?
0 dwarrior2
 
08.07.08
22:25
Добрый вечер!
Имеется отчет, как я могу выгрузить его в существующий файл Excel и поместить на определенный лист, например 3, сохранив данные на листе 1 и 2? В отчете много форматирования, хотелось бы его сохранить.
1 ТелепатБот
 
гуру
08.07.08
22:25
2 Если
 
09.07.08
05:28
Excel = СоздатьОбъект("Excel.Application");
Excel.Workbooks.Open(ФЗ);
Лист=Excel.Worksheets(3);
3 Яндекс
 
09.07.08
07:08
//*******************************************
// CopyWorsheetExcel(vlParameter)
//
// Параметры:
//  vlParameter - Список значений. Должен содержать
//                следующие значения:
//                InBook  - Строка. Полное имя файла источника.
//                OutBook - Строка. Полное имя файла цели.
//                Sheet   - Строка. Имя листа.
//
// Возвращаемое значение:
//  Число. 0 - лист скопирован. Иначе код ошибки:
//         1 - Не пердали ни одного файла.
//         2 - Файл источник не существует.
//         3 - Файл цель не существует.
//         4 - Не передали имя листа.
//         5 - Excel не установлен.
//         6 - В файле источника отсутсвует лист с
//             переданным наименованием.
//
// Описание:
//  Функция копирует лист Excel из одной книги в другую.
//  Если передали только одно имя, то создается копия листа
//  в этой же книге.
//
function CopyWorsheetExcel(vlParameter);
   // Получим из списка имя файлов.
   InFile = vlParameter.Get("InBook");
   OutFile = vlParameter.Get("OutBook");
   // Проверим правильность полученных параметров.
   if (emptyvalue(InFile) = 1) and (emptyvalue(OutFile) = 1) then
       // Если не передали не одного имени файла,
       // то закончим с ошибкой.
       return 1;
   elsif emptyvalue(InFile) = 1 then
       // Если получили только OutBook скопируем его
       // значение. Будем копировать лист в одной книге.
       InFile = OutFile;
   elsif emptyvalue(OutFile) = 1 then
       // Аналогично.
       OutFile = InFile;
   endif;
   // Проверим существование файла источника.
   if fs.ExistFile(InFile) = 0 then
       return 2;
   endif;
   // Проверим существование файла цели.
   if fs.ExistFile(OutFile) = 0 then
       return 3;
   endif;
   // Получим имя листа.
   InWorksheet = vlParameter.Get("Sheet");
   if emptyvalue(InWorksheet) = 1 then
       // Если значение пустое, то закончим с
       // ошибкой.
       return 4;
   endif;
   // Пробуем подключиться к OLE Server Excel
   try
       Excel = createobject("Excel.Application");
   except
       return 5;
   endtry;
   // Откроем файл источника.
   Excel.Workbooks.Open(InFile);
   // Если источник не равен цели, то
   if InFile <> OutFile then
       // откроем и файл цели.
       Excel.Workbooks.Open(OutFile);
   endif;
   // Получим указатели на открытые нами книги.
   InBook = Excel.Workbooks.Item(ShortName(InFile));
   OutBook = Excel.Workbooks.Item(ShortName(OutFile));
   // Посмотрим есть ли у источника лист с нужным
   // нам наименованием.
   try
       // Если есть, то получим указатель на него.
       InSheet = InBook.Sheets(InWorksheet);
   except
       // Иначе, говорим об ошибке.
       return 6;
   endtry;
   // Копируем лист.
   InSheet.Copy(OutBook.Worksheets(1));
   // Покажем результат пользователю.
   Excel.Visible = 1;
   Excel.EnableEvents = 1;
   Excel.ScreenUpdating = 1;
   return 0;
endfunction
4 dwarrior2
 
10.07.08
07:16
Т.е. механизм такой - сохраняем отчет во временный файл Excel и потом копируем лист из него в нужный мне файл Excel?

Спасибо, попробую:)
5 JeHer
 
10.07.08
07:46
(3) а если нету МС офиса? Тогда выручает Йоксель, йопта. Юзай Яндекс или www.yoksel.ru, как мне помнится
6 Яндекс
 
10.07.08
07:52
(5)а если бы небыло, то так бы и сказали... а насчет йокселя согласен - йобата
7 JeHer
 
10.07.08
08:01
(6) Я не разработчик Ёкселя, и не получаю деньгу за рекламу, НО это практически ЕДИНСТВЕННЫЙ  нормальный конвретер тз MXL to XLS, ИМХО. Я им пользуюсь,  юзеры в удовлетворении, я в еще большем. Так что, нулевой, юзай йоксель.
8 Яндекс
 
10.07.08
08:18
нулевой это когда хер висит между ног и не встает... лучше шлепай амортизацию начислять...
9 Ужас бухгалтера
 
10.07.08
10:12
(5) Точнее: http://yoksel.net.ru  :)

(8) У мсье богатый жизненный опыт...
10 Яндекс
 
10.07.08
10:24
(9)достаточный что бы не пользоваться вашей подделкой под ексель
11 Яндекс
 
10.07.08
10:27
12 Ужас бухгалтера
 
10.07.08
10:30
(10) Ну естественно, когда такие проблемы, где уж тут пользоваться внешними компонентами :D
13 Яндекс
 
10.07.08
10:39
(12)давай не умничай помоги своим йопселем решить проблему
14 Ужас бухгалтера
 
10.07.08
10:40
(13) Дык, все решается :D
15 Яндекс
 
10.07.08
11:13
вставить в лист макрос, выполнить его и получить результат
16 Ужас бухгалтера
 
10.07.08
11:16
(15) Вставить в 1С макрос (ой, пардон, код на встроенном языке), выполнить его и получить результат. И главное, без всяких внешних ... макросов!!!
17 Яндекс
 
10.07.08
11:23
(16)как вставить в 1С макрос для екселя?
18 Ужас бухгалтера
 
10.07.08
11:26
(17) А на хрен? Может, Йоксель тебе еще носки гладить должен? У него есть определенный набор возможностей. Каждый сам определяет, достаточны они для него или нет.
19 Яндекс
 
10.07.08
11:29
(18)мне надо обработать данные имея поноценный функционал возможностей VBA ... например разобрать компаунд...


я разве просил носки гладить... ты сказал, что йоксель замена екселя... то есть все таки йопселем не замена екселя?
20 Ужас бухгалтера
 
10.07.08
11:34
(19) Если тебе нужен полноценный функционал VBA, то бери Excel и не парься.

То, что Йоксель замена Excel я никогда не говорил - это ты сам себе придумал и сам с этой глупостью борешься.

Йоксель в ряде случаев удобнее для создания файлов Excel, чем использование Мокселя или OLE-automation. Вот и все. Каждый сам решает, достаточен ли ему функционал Йокселя и делает выбор.

Пытаться же абсолютно все делать стандартным Мокселем и Excel через OLE как делаешь ты - неразумно. Пытаться абсолютно все делать Йокселем как НЕ ДЕЛАЮ я - тоже неразумно.
21 Яндекс
 
10.07.08
11:41
то есть переведя на русский... если вам нужен вот простой файлик екселя(аналог по возможностям стандартного мокселя) то имейте йоксель... а если более правильный и навороченый, то я пас... тут вам ексель в руки?
22 Ужас бухгалтера
 
10.07.08
11:44
(21) Нет. Если перевести на русский, то звучит оно так: "Если вас устраивает функционал Йокселя по созданию файлов Excel, то используйте Йоксель. Если вас не устраивает функционал Йокселя, то используйте Excel".
23 Яндекс
 
10.07.08
11:53
(22)тогда не понял смысл твоего наезда... тебе не понравилось, что я твою подделку под екслеь йобатой назвал?
24 Яндекс
 
10.07.08
11:54
екслеь = ексель
25 Если
 
10.07.08
11:55
минуточку. попкорн кончился.
26 Ужас бухгалтера
 
10.07.08
11:58
(23) Что вы, что вы, здесь никто ни на кого не наезжает :D
27 Яндекс
 
10.07.08
12:02
да... а то я подумал, что вы привыкли ужан на бухгалтеров нагонять и решили эксперемент на мисте провести...
28 Ужас бухгалтера
 
10.07.08
12:04
(27) Испугался, да? :D
29 Яндекс
 
10.07.08
12:14
как медведь бочонка меда
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший