Имя: Пароль:
1C
 
копирование листа Эксел в пределах одной книги
0 punkforever
 
19.01.07
16:37
Может знает кто как осуществить данное
из 1С через OLE
1 punkforever
 
19.01.07
16:40
Как вот это сделать из 1С :"Sheets("Total").Copy Before:=Sheets(1)"?
2 mergan
 
19.01.07
16:51

//*******************************************
// GetShortName(Name)
//
// Параметры:
//  Name     - Строка. Полное имя файла.
//
// Возвращаемое значение:
//  Строка. Короткое имя файла.
//
// Описание:
//  Функция извлекает из длинного имени файла
//  его короткое.
//
function GetShortName(Name)
   Answer = Name;
   // Получим длину переданной нам строки.
   LenName = strlen(Answer);
   // Установим указатель на последний символ.
   Pos = LenName;
   // Начнем искать самый последний слэш.
   // Если таковой имеется.
   Make = "yes";
   while Make = "yes" do
       // Посмотрим текущий символ.
       // Не слэш ли он.
       if mid(Answer, Pos, 1) = "\" then
           // Получим строку от слэша и до конца.
           // Это и есть короткое имя файла.
           Answer = right(Answer, LenName - Pos);
           // Выходим из цикла
           Make = "no";
       endif;
       // Уменьшим указатель на текущий символ.
       Pos = Pos - 1;
       // Если он равен нулю, то просмотрели все.
       // Слэша нет. Значит нам передали короткое имя.
       if Pos = 0 then
           // Выходим из цикла
           Make = "no";
       endif;
   enddo;
   return Answer;
endfunction

//*******************************************
// 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
3 mergan
 
19.01.07
16:52
это копирование листа из одной книги в другую... но думаю втыкнешь как лист скопировать в междусобойчик
4 punkforever
 
19.01.07
16:58
(3) Thank a lot
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой