|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
очистить область в Excel
как очистить все клетки 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; |