Форум: "Corba";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "Corba";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.013 c