![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Я загружаю в StringGrid файл екселя и у меня всегда первое открытие файла сопровождается ошибкой "Вызов отключён", дальше всё нормально. Помогите мне избавится от этой ошибки. Причём если я до попытки загрузки файла вхожу в эксель, что-то там делаю, то потом всё норм.
|
|
#2
|
||||
|
||||
|
Так может кто-то поможет а то стоко умов собралось и никто не может помочь
|
|
#3
|
|||
|
|||
|
Скорее всего ты используешь код из стандартных примеров.
Там первым вызовом стоит поытка получения существующего экземпляра объекта, которого, естесвенно, на тот момент не существует. Вот он и падает. Если не так, то код "в студию", тут умов много, а телепатов маловато... |
|
#4
|
||||
|
||||
|
Код:
function xls_to_stringgrid(agrid: tstringgrid; axlsfile: string): boolean;
const
xlcelltypelastcell = $0000000b;
var
xlapp, sheet: olevariant;
rangematrix: variant;
x, y, k, r: integer;
begin
result := false;
xlapp := createoleobject('excel.application');
try
xlapp.visible := false;
xlapp.workbooks.open(axlsfile);
sheet := xlapp.workbooks[extractfilename(axlsfile)].worksheets[1];
sheet.cells.specialcells(xlcelltypelastcell, emptyparam).activate;
x := xlapp.activecell.row;
y := xlapp.activecell.column;
agrid.rowcount := x;
agrid.colcount := y;
rangematrix := xlapp.range['a1', xlapp.cells.item[x, y]].value;
k := 2;
repeat
for r := 2 to y do
agrid.cells[(r - 1), (k - 1)] := rangematrix[k, r];
inc(k, 1);
agrid.rowcount := k + 1;
until k > x;
rangematrix := unassigned;
finally
if not varisempty(xlapp) then
begin
xlapp.quit;
xlapp := unassigned;
sheet := unassigned;
result := true;
end;
end;
end;lmikle: пользуемся тегами, а то будет наказание! |
|
#5
|
|||
|
|||
|
Здесь падает?
Код:
sheet := xlapp.workbooks[extractfilename(axlsfile)].worksheets[1]; |
|
#6
|
||||
|
||||
|
строчкой выше
|