Имя: Пароль:
1C
 
Копирование ячеек из одного листа Excel в другой
0 Arm12
 
29.07.09
12:37
Люди, дайте совет. Нужно в файле Excel скопировать ячейки из одного листа в другой. Я это делаю с помощью обработки в 8.1.
Короче, открываю файл через Com, пробегаю в цикле строки на первом листе, но скопировать их не знаю как на второй лист файла.

Подскажите как это правильно сделать!

В файле записей очень много, много ли уйдет времени на копирование?
1 Arm12
 
29.07.09
12:41
Народ плизззззз !!!
2 Arm12
 
29.07.09
12:53
Ну хоть кто нибудь!!!
3 Oleg_Kag
 
29.07.09
12:53
4 skunk
 
29.07.09
13:00
//*******************************************
// 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
5 Scooter
 
29.07.09
13:02
Range("C5:F18").Select
   Selection.Copy
   Sheets("????2").Select
   Range("D6").Select
   ActiveSheet.Paste
6 skunk
 
29.07.09
13:06
(5)зачем так сложно ... да и формат не скопирует вроде как
7 Arm12
 
29.07.09
13:15
skunk, Спасибо раскуриваю !!!
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.