//*******************************************
// 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
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой