Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
ВнизTExcelApplication - OLE error 800A03EC. Найти похожие ветки
← →
e-mike © (2005-03-03 12:57) [0]вызываю
EA.ActiveWorkbook.Close(True,SaveDialog.FileName,EmptyParam,lcid);
если такой файл уже существует, вылезает стандартное окно про overwrite - [Да, Нет, Отмена].
с Да/Нет всё в порядке, а при выборе Отмена выдаётся ошибка "OLE error 800A03EC"
как бороться?
← →
Digitman © (2005-03-03 13:04) [1]заключи строчку в try..except
← →
e-mike © (2005-03-03 13:07) [2]>Digitman © (03.03.05 13:04) [1]
угу, уже.. не помогает
← →
e-mike © (2005-03-03 13:41) [3]или альтернативный вопрос - как ещё можно сохранить сгенерированный в excel файл?
← →
e-mike © (2005-03-03 14:15) [4]выкрутился так:
EA.ActiveWorkbook.SaveCopyAs(SaveDialog.FileName,lcid);
EA.ActiveWorkbook.Close(False,"",EmptyParam,lcid);
закрывать workbook надо в любом случае, иначе при открытии сохранённого файла из проводника помимо него открывается ещё
и незакрытая несохранённая книга
выше указанный вариант справляется с проблемой, но можно ведь, наверное, разом и сохранить, и закрыть, и чтобы при этом не
возникала ошибка из сабжа.
посему вопрос [0] остаётся актуальным
← →
Ольга (2005-03-03 14:16) [5]if SaveDialog.Execute then
EA.ActiveWorkBook.SaveAs(SaveDialog.FileName);
← →
Digitman © (2005-03-03 14:19) [6]
> не помогает
гонишь.
класс исключения ?
← →
e-mike © (2005-03-03 15:19) [7]>Ольга (03.03.05 14:16) [5]
у SaveAs целая куча параметров (не меньше 8), на которые нет справки
>Digitman © (03.03.05 14:19) [6]
просто
try
..
except
..
end;
должны ловиться все исключения, разве нет?
← →
e-mike © (2005-03-03 15:22) [8]>Ольга (03.03.05 14:16) [5]
целых 12 параметров
и, сдаётся мне, закрывать книгу всё равно придётся, т.е.
такой вариант слабо отличается от
e-mike © (03.03.05 14:15) [4]
← →
Digitman © (2005-03-03 15:26) [9]
> должны ловиться все исключения, разве нет?
по идее - обязаны ...
и что ? не "ловятся" ?
что показывает SpyXX в части принадлежности окна сообщения об ошибке ? КАКОМУ треду КАКОГО процесса это окно принадлежит ?
← →
olookin © (2005-03-03 16:19) [10][7] e-mike © (03.03.05 15:19)
Напишите так:
procedure CloseBook(SaveBook: boolean);
begin
if not VarIsEmpty(Excel) then begin
Excel.Workbooks[Index].Close(SaveChanges:=SaveBook);
end;
Про SaveAs
У SaveAs все параметры описаны в справке по VB для Office и поставляются вместе с офисом. Надо только ставить этот элемент при инсталляции Office
SaveAs Method
Saves changes to the sheet (Syntax 1) or workbook (Syntax 2) in a different file.
Syntax 1
expression.SaveAs(Filename, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AddToMru, TextCodePage, TextVisualLayout)
Syntax 2
expression.SaveAs(Filename, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodePage, TextVisualLayout)
expression Required. An expression that returns a Chart or Worksheet object (Syntax 1) or a Workbook object (Syntax 2).
Filename Optional Variant. A string that indicates the name of the file to be saved. You can include a full path; if you don’t, Microsoft Excel saves the file in the current folder.
FileFormat Optional Variant. The file format to use when you save the file. For a list of valid choices, see the FileFormat property. For an existing file, the default format is the last file format specified; for a new file, the default is the format of the version of Excel being used.
Password Optional Variant. A case-sensitive string (no more than 15 characters) that indicates the protection password to be given to the file.
WriteResPassword Optional Variant. A string that indicates the write-reservation password for this file. If a file is saved with the password and the password isn’t supplied when the file is opened, the file is opened as read-only.
ReadOnlyRecommended Optional Variant. True to display a message when the file is opened, recommending that the file be opened as read-only.
CreateBackup Optional Variant. True to create a backup file.
AccessMode Optional Variant. The workbook access mode. Can be one of the following XlSaveAsAccessMode constants: xlShared (shared list), xlExclusive (exclusive mode), or xlNoChange (don’t change the access mode). If this argument is omitted, the access mode isn’t changed. This argument is ignored if you save a shared list without changing the file name. To change the access mode, use the ExclusiveAccess method.
ConflictResolution Optional Variant. Specifies the way change conflicts are resolved if the workbook is a shared list. Can be one of the following XlSaveConflictResolution constants: xlUserResolution (display the conflict-resolution dialog box), xlLocalSessionChanges (automatically accept the local user’s changes), or xlOtherSessionChanges (accept other changes instead of the local user’s changes). If this argument is omitted, the conflict-resolution dialog box is displayed.
AddToMru Optional Variant. True to add this workbook to the list of recently used files. The default value is False.
TextCodePage Optional Variant. Not used in U.S. English Microsoft Excel.
TextVisualLayout Optional Variant. Not used in U.S. English Microsoft Excel.
← →
e-mike © (2005-03-03 16:52) [11]
> Digitman © (03.03.05 15:26) [9]
приду домой - напишу, а исключение, возможно, вообще через мою программу не проходит, сам excel генерит и ошибку, и окно с ошибкой..
ведь окно о перезаписи не сам я делаю, с ошибкой, может быть, то же..
> olookin © (03.03.05 16:19) [10]
про справку офиса я и не подумал =), thnx, дальше перевода записанных макросом действий я не пошёл..
procedure CloseBook(SaveBook: boolean);
begin
if not VarIsEmpty(Excel) then begin
Excel.Workbooks[Index].Close(SaveChanges:=SaveBook);
end;
<\code>
я получал функции, процедуры и параметры через code compl....,
close с одним параметром не заметил, там имя файла не нужно?..
сейчас проверить нет возможности проверить, а там при true как файл перезаписывается?
← →
olookin © (2005-03-03 16:55) [12][11] e-mike © (03.03.05 16:52)
Кажется, имя файла не нужно. Если книга уже обозвана, то сохранится в существующий файл. Если нет - до будет вызван диалог.
← →
e-mike © (2005-03-04 01:13) [13]
Digitman © (03.03.05 15:26) [9]
тред с процессом - мои..
да и после полного переписывания окно с ошибкой гасится при try-except..
бред, мистика или дурные ночные мозги=) больше часа безрезультатно пытался восстановить проблему, добился только, что она пролезает при try-finally
olookin © (03.03.05 16:55) [12]
close всё же с одим параметром нету
в общем, вопрос снимается, всем благодарности, а использовать всё же буду вариант из [4]
← →
GanibalLector © (2005-03-04 01:59) [14]>у SaveAs целая куча параметров (не меньше 8), на которые нет справки
Не пойму я,зачем использовать ранне связывание?Один геморой да и только!!!Чем позднее не угодило?
← →
e-mike © (2005-03-04 11:16) [15]
> GanibalLector © (04.03.05 01:59) [14]
а как со скоростью?
так что сравнительную характеристику, пжста=)
← →
olookin © (2005-03-04 14:49) [16][13] e-mike © (04.03.05 01:13)
>>close всё же с одим параметром нету
Аналогичный дельфовому пример из VB:
Close Method Example
This example closes Book1.xls and discards any changes that have been made to it.
Workbooks("BOOK1.XLS").Close SaveChanges:=False
This example closes all open workbooks. If there are changes in any open workbook, Microsoft Excel displays the appropriate prompts and dialog boxes for saving changes.
Иначе говоря, все параметры метода Close опциональные.
← →
olookin © (2005-03-04 14:50) [17]Немного повторюсь, кое-чего не дописал.
[13] e-mike © (04.03.05 01:13)
>>close всё же с одим параметром нету
Аналогичный дельфовому пример из VB:
Close Method Example
This example closes Book1.xls and discards any changes that have been made to it.
Workbooks("BOOK1.XLS").Close SaveChanges:=False
This example closes all open workbooks. If there are changes in any open workbook, Microsoft Excel displays the appropriate prompts and dialog boxes for saving changes.
Workbooks.Close (без параметров вовсе)
Иначе говоря, все параметры метода Close опциональные.
← →
GanibalLector © (2005-03-04 23:43) [18]>а как со скоростью?
Все отлично.Разница не существенна,но все же раннее чуток быстрее.
Зато :
-при позднем нет привязки к версии Excel(Word),а при раннем есть;
-при позднем можешь указывать только те параметры медов, которые тебе нужны;
-не доступен Code Insight :( Но,все решаемо
← →
e-mike © (2005-03-05 02:27) [19]
GanibalLector © (04.03.05 23:43) [18]
что ж, убедительно, спасибо=)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.037 c