|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Несколько вопросов про Excel
Здравствуйте.
Надо: найти конкретный комментарий в открытой книге. Я думал это осуществить простым перебором ячеек используемого диапазона, но что то не пошло... Пробовал вот так: Код:
exApp:=GetActiveOleObject('excel.application'); ExBook := exApp.WorkBooks.Open(FileName:=StrFileName); ExSheet := ExBook.ActiveSheet; ExURng := ExSheet.UsedRange; R := ExURng; R := ExSheet.Range['A1', EmptyParam].SpecialCells(xlCellTypeLastCell, EmptyParam); endRow:=r.row; endCol:=r.col; Есть вариант через Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate; а потом уже x := XLApp.ActiveCell.Row; y := XLApp.ActiveCell.Column; но мне не нравится идея активации какой-то ячейки. Вопрос №2: Как определить выделенную область в Excel в OleContainer, а главное адреса первой и последней ячейки этой области? В формате A1 Вопрос№3: При открытии файла так: OleContainer1.CreateObjectFromFile(ExtractFilePath (Application.ExeName)+'ППР_6.xlt', false); Основное меню Excel становится неактивным. Ладно там Создать, Открыть, но кнопка Сохранить тоже не работает( Как быть? Помогите пожалуйста хоть с чем-нибудь. |
#2
|
||||
|
||||
Кусок рабочего кода из одного проекта:
Код:
procedure TfMain.ImportExcel(filename: string); var xla: OleVariant; x, y: integer; comm: string; // ... begin try xla := CreateOleObject('Excel.Application'); xla.Visible := false; xla.Workbooks.Open(filename); if xla.Cells.CurrentRegion.Columns.Count = 10 then begin for y:=1 to xla.Cells.CurrentRegion.Rows.Count do begin // ... comm := 'NULL'; for x:=1 to 10 do if not VarIsClear(xla.Cells.Item[y, x].Comment) then comm := dbstring(xla.Cells.Item[y, x].Comment.Text); // ... end; end else begin MessageDlg('Неопознанный формат таблицы',mtError,[mbOk],0); end; xla.ActiveWorkbook.Close(false); xla.Quit; MessageDlg('Импорт успешно завершён',mtInformation,[mbOk],0); except on E: Exception do MessageDlg('Импорт из Microsoft Excel невозможен на вашем компьютере'#10#13+e.Message,mtError,[mbOk],0); end; end; Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj Последний раз редактировалось PhoeniX, 18.11.2012 в 16:51. |
#3
|
|||
|
|||
А что если используемый диапазон начинается не с 1 ячейки? а с, к примеру, B23?
|
#4
|
||||
|
||||
Цитата:
|
#5
|
|||
|
|||
А вы читали мой первый пост вообще? )))
|
#6
|
||||
|
||||
Цитата:
А в чём подвох? Я в работе использовал UsedRange и проблем с ним не замечал. |
#7
|
|||
|
|||
Вот я и спрашиваю как именно мне узнать адреса начала и конца используемого диапазона?)
|
#8
|
|||
|
|||
Ладно, с поиском я вроде разобрался. Подскажите пожалуйста как быть с главным меню икселя?
Как вообще можно сохранить файл икселя? |