![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
как очистить все клетки A1:AL900 в Excel'e из Delphi?
Код:
...
//Работает-----------------------------------------
XLApp := CreateOleObject('Excel.Application');
XLApp.Workbooks.Open(Filename);
Book := XLApp.Workbooks[1];
Book.Activate;
//---------------------------------------------------
Book.Range('A1:AL900').ClearContents; //выдает ошибку
... |
|
#2
|
|||
|
|||
|
Если писать макрос, то пишет:
Sub Macro1() ' ' Macro1 Macro ' Macro recorded 18.04.2011 by Zver ' ' Range("A1:AK23").Select Selection.ClearContents End Sub Как это сделать в Delphi? |
|
#3
|
|||
|
|||
|
Эта строка выдаёт не просто ошибку. А как свидетельствует картинка с ошибкой (во вложении):
"…метод Range не поддерживается объектом автоматизации…" Надо искать другие пути очистки ячеек… |
|
#4
|
|||
|
|||
|
Цитата:
Поэтому я нащупал такой вариант, где это не метод, а свойство Range имеется: Код:
...
var
MsExcel : variant; // это Excel.Application
ExcBook : variant; // книга в Excel
...
procedure TForm1.Button3Click(Sender: TObject);
begin
try
try
MsExcel := CreateOleObject('Excel.Application');
MsExcel.Workbooks.Open(FilePath); // FilePath - путь к файлу с именем открываемого файла
MsExcel.Range['A1:A3'].ClearContents;
ExcBook := MsExcel.Workbooks[1];
ExcBook.SaveAs(FilePath); // появляется диалог Microsoft Excel для перезаписи файла, в котором соглашаемся ОК на перезапись
ExcBook.Close;
finally
ExcBook := UnAssigned;
MsExcel := UnAssigned;
end;
except on Ex : Exception do
begin
MessageBox(0, 'Ошибка при создании документа Excel', 'Программа Train', MB_OK);
end;
end;
end;
...Приложение разрабатывается на Delphi 7 в ОС Vista, используется MS Office 2003. Приведенный кусок кода полностью работоспособный. Попробуйте его просто целиком вставить в программу и создать книгу в Excel и заполнить только ячейки A1:A3. Попробовать, как работает хотя бы это, а там посмотрим. Последний раз редактировалось blazonic, 11.05.2011 в 22:11. |
|
#5
|
|||
|
|||
|
Да. Проблема решена и уже давно.
Код:
Book.Sheets[1].Range['A5:AL900', EmptyParam].ClearFormats; Book.Sheets[1].Range['A5:AL900', EmptyParam].ClearContents; |