Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.04;
Скачать: CL | DM;

Вниз

Excel: сохраняет "ненужные" копии файлов   Найти похожие ветки 

 
click   (2007-01-14 14:31) [0]

текст процедуры:
var
e,sheet: variant;
countrec,i,a,q: integer;
rec: shortstring;
time: tsystemtime;
begin
getsystemtime(time);
if messagedlg("Экспортировать данные в файл Excel?",mtconfirmation,[mbyes,mbno],0)=mryes then
{*******////////// create excel list///////////*******}

e:=createoleobject("excel.application");
e.workbooks.open(form3.SaveDir+"\"+form3.ReportName+"\"+form3.ReportName+".xls");
sheet:=e.sheets.item[1];
//// calculate rec count////
i:=0;
repeat
inc(i);
rec:=stringgrid1.cells[i,0];
until rec="";
countrec:=i-1;
//// load cels to excel/////
a:=-1;
repeat
inc(a);
i:=0;
q:=-1;
repeat
inc(i);
inc(q);
sheet.Cells[a+11,i]:=stringgrid1.Cells[q,a+1];
if (i=7) or (i=8) or (i=9) or (i=13) or (i=14) then begin
sheet.Cells[a+11,i]:="";
q:=q-1;
end;
until i=18;
until a=countrec;
sheet.Cells[5,1]:=inttostr(time.wDay)+" "+form1.NumberToMonth(time.wMonth)+" "+inttostr(time.wYear)+" г.";
e.save;
e.quit;
e:=unassigned;
end;


проблема:
после работы этого участка кода программа как ей и положено сохраняет данные в *.xls файл по пути указанному в этой строке:
e.workbooks.open(form3.SaveDir+"\"+form3.ReportName+"\"+form3.reportName+".xls");
Но! кроме этого она делает копию файла в ~\Мои документы\ и называет его: RESUME.xlw, а это приводит к тому что если этот код выполняется повторно пользователю каждый раз выпадает сообщение о существовании этого файла и предложение его заменить...
вобщем как-то не очень красиво...
вопрос:
как избавится от резервной копии файла?
Спасибо заранее всем попытавшимся помочь!


 
Kostafey ©   (2007-01-14 15:27) [1]

Я так понял, что файл отчета создается вновь.

А что если вместо

> e.workbooks.open(form3.SaveDir+"\"+form3.ReportName+"\"+form3.ReportName+ ".xls");
...
> e.save;

использовать

e.WorkBooks.add;
...
e.ActiveWorkbook.SaveAs(form3.SaveDir+"\"+form3.ReportName+"\"+form3.ReportName+ ".xls");
e.ActiveWorkbook.close;
e.Quit;
e := UnAssigned;


 
click   (2007-01-15 13:40) [2]

Спасибо.
Но к сожалению такой вариант тоже не подходит т.к сам файл (шаблон) сначала копируется в заданную папку затем открывается, редактируется и сохраняется. Если же использовать SaveAs то вопрос о существовании такого файла и его замене возникнет 100%.
Я даже нашел почему именно в Мои Документы он сохраняет Resume.xlw - это путь который указан в Сервис - Настройка - Общие - Рабочая директория в Excel (как-то так, наверняка не помню - на работе стоит OOffice)... Если эту строку очистить то все работает идеально! А вот как очистить ее програмно или научить свою программу не заставлять Excel делать резерв-копию не знаю....


 
umbra ©   (2007-01-15 13:56) [3]


> А вот как очистить ее програмно


e.DefaultFilePath := "";


 
click   (2007-01-15 14:01) [4]

Сергей ты лучший! Пока попробовать возможности нет... Но чуствую ОНО!
Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2007.02.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.036 c
1-1165586648
.ruslan
2006-12-08 17:04
2007.02.04
Информация о создании компонента


2-1168961921
Галинка
2007-01-16 18:38
2007.02.04
Несколько ComboBox, ссылающихся на одну и ту же таблицу


15-1168833694
Slider007
2007-01-15 07:01
2007.02.04
С днем рождения ! 14 января


4-1158843222
laronov
2006-09-21 16:53
2007.02.04
Как получить данные из чужого DBGrid а


6-1156423548
BFG9k
2006-08-24 16:45
2007.02.04
idHTTPServer - документ по умолчанию