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

Вниз

SaveAs через OLE в Excel не позволяет переписать поверху   Найти похожие ветки 

 
Vetal   (2005-01-10 15:02) [0]

Всем привет!

Есть проблема. Использую Excel через OLE. Сохраняю файл, используя Workbook.SaveAs. Так вот, проблема в том, что если файл с тем именем, с которым я сохраняю, уже присутствует, то Excel выдает диалоговое окно с вопросом переписать ли поверху.
Можно ли автоматически переписывать поверху, не запрашивая это у пользователя?

Пример:
var
Excel,WorkBook:variant;
begin
Excel:=CreateOleObject("Excel.Application");
WorkBook:=Excel.Workbooks.Add;
Excel.Visible:= false;
Workbook.SaveAs("c:\temp\wb.xls");

Так вот, файл с именем c:\temp\wb.xls уже присутствует. При выполнении строки с SaveAs выскакивает табличка:
A file named "c:\temp\wb.xls" already exists in this location. Do you want to replace it?
А мне нужно, чтобы файл переписался поверху, при этом не спрашивая у пользователя. Можно ли так сделать?

Всем заранее спасибо за ответы!


 
GanibalLector ©   (2005-01-11 00:24) [1]

Workbook.Close($00000001, "c:\temp\wb.xls");
где :
xlDoNotSaveChanges = $00000002;
xlSaveChanges = $00000001;


 
Vetal   (2005-01-11 17:41) [2]

Неа, все равно при попытке пересохранить существующий файл выдает табличку:
A file named "c:\temp\wb.xls" already exists in this location. Do you want to replace it?
А мне нужно, чтобы сохраняло без таблички.
Кстати, в хелпе по экселю первый параметр обозначен как true или false... Я писал у себя true.


 
Cobalt ©   (2005-01-11 18:51) [3]

есть только одно предложение - открывать сразу этот файл.
Если же имя файла в момент начала работы неизвестно, то можно перед сохранением открывать во втором экземрляре этот файл, очищать, копировать в него содержимое из рабочего "места", и сохранять уже второй экземпляр (открытый как требуемый файл).


 
GanibalLector ©   (2005-01-11 20:39) [4]

>Неа, все равно при попытке пересохранить существующий файл выдает табличку
Чушь городишь!Никаких табличек нет и быть не может!!!
Для примера :

var a,b:integer;
begin
XLApp:=CreateOleObject("Excel.Application");
XLApp.Visible:=true;
XLApp.WorkBooks.Open("C:\test.xls");
a:=random(5);
b:=random(5);
if a=0 then a:=1;
if b=0 then b:=1;

XLApp.WorkBooks[1].WorkSheets[1].Name:="test ;)";
XLApp.WorkBooks[1].Sheets[1].Cells[a,b]:="GanibalLector";

XlApp.ActiveWorkbook.Close(1);
XlApp.Quit;
XlApp:=Unassigned;
end;


 
Vetal   (2005-01-12 12:12) [5]

Вобщем, я понял как можно обойти проблему.
Я создаю новый файл, а потом пытаюсь его программно сохранить. Если уже такой существует, возникает табличка, от которой нельзя избавиться.
Если файл открывать, а потом сохранять, табличек никаких не будет.

Из этого следует, что нужно сделать следующим образом:
Попробовать открыть файл. Если попытка открытия завершается ошибкой, тогда создавать файл. После окончания сеанса работы - сохранять.

Вобщем, похоже, это решение проблемы. Хотя Мелкомягкие неправы. Им нада было опционально ввести в функцию сохранения параметр типа RewriteIfExists...

Всем спасибо!!



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

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

Наверх




Память: 0.48 MB
Время: 0.05 c
2-1125054811
Теплый снег
2005-08-26 15:13
2005.10.09
Работа со строками


2-1124970321
grigory
2005-08-25 15:45
2005.10.09
Побайтное копирование файла!


1-1126866998
Lazarius
2005-09-16 14:36
2005.10.09
Простой отчет. Как???


14-1126620797
Вопрошающий
2005-09-13 18:13
2005.10.09
Сцылки на книжки по Жабе 2


14-1127106722
Ozone
2005-09-19 09:12
2005.10.09
Нужен свитч