![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Про Excel [D5, Win2k]
klerk © (2004-09-30 14:54:00)Вот пытаюсь загрузить имена всех открытых файлов Excel в Combobox.
ExcelApplication1.Connect;
try
excelapplication1.wo
if ExcelApplication1.Workbooks.Count=0 then
begin
Combobox1.items.add('Нет открытых.');
combobox1.ItemIndex:=0;
end
else
for I := 1 to ExcelApplication1.Workbooks.Count do
begin
W := ExcelApplication1.Workbooks[I];
S:=w.name;
Combobox1.Items.Add(S);
end;
finally
ExcelApplication1.Disconnect;
combobox1.ItemIndex:=0;
Так он находит один (первый) и всё.
Помогите.
YurikGL (2004-09-30 16:48:00) [1]
> klerk (30.09.04 16:29) [10]
Попробуй что-нибудь типа
try
i:=1;
while true do begin
Combobox1.Items.Add(ExcelApplication1.Workbooks[I].name);
inc(i);
end;
except
end;
Когда дойдет до конца будет исключение...
Хотя извращение это
klerk (2004-09-30 16:29:00) [2]1) Showmessage(inttostr(ExcelApplication1.Workbooks.Count)); = 1
2) Попробовал на 6 - то же.
3) Выдаёт : неверный индекс.
:(((((
YurikGL (2004-09-30 16:22:00) [3]
> klerk (30.09.04 15:50) [6]
1) А сколько у тебя ExcelApplication1.Workbooks.Count?
2) Попробуй не две книги, а пять
3) Попробуй книги не с 1-цы а с 0 считать
klerk (2004-09-30 16:02:00) [4]Я использую D5 и его стандартные компоненты.
Переделал всё на Memo.
Результат тот же:(
Добавляет одну строку (Книга1) и всё.
YurikGL (2004-09-30 15:52:00) [5]
> klerk (30.09.04 15:50) [6]
У меня два...На большем количестве не проверял... Может combobox как-то не так настроен?
Использую 2000-е компоненты
klerk (2004-09-30 15:50:00) [6]ExcelApplication1.ConnectKind:=ckRunningInstance;
ExcelApplication1.Connect;
//ExcelApplication1.Workbooks.Item[1].Name;
if ExcelApplication1.Workbooks.Count=0 then
Combobox1.items.add('нет.')
else
for I := 1 to ExcelApplication1.Workbooks.Count do
Combobox1.Items.Add(ExcelApplication1.Workbooks[I].name);
Всё равно заносит в combobox одно значение:(
Чего я не понимаю?
YurikGL (2004-09-30 15:40:00) [7]
ExcelApplication1.ConnectKind:=ckRunningInstance;
ExcelApplication1.Connect;
ExcelApplication1.Workbooks.Item[1].Name;
if ExcelApplication1.Workbooks.Count=0 then
begin
Combobox1.items.add('Íåò îòêðûòûõ.');
combobox1.ItemIndex:=0;
end
else
for I := 1 to ExcelApplication1.Workbooks.Count do
Combobox1.Items.Add(ExcelApplication1.Workbooks[I].name);
ExcelApplication1.Disconnect;
YurikGL (2004-09-30 15:36:00) [8]
> klerk (30.09.04 15:22) [3]
Дык это ж запускает новую копию екселя... В ней и нет документов...
klerk (2004-09-30 15:22:00) [9]>YurikGL ©
Сделал по-твоему.
Открыто два файла.
А он всё равно пишет в Combobox "Нет".
YurikGL (2004-09-30 15:09:00) [10]
App : Variant;
try
app := CreateOleObject('Excel.Application');
App.Visible := True;
if app.Workbooks.Count=0 then
begin
Combobox1.items.add('Íåò îòêðûòûõ.');
combobox1.ItemIndex:=0;
end
else
for I := 1 to app.Workbooks.Count do
Combobox1.Items.Add(app.Workbooks[I].name);
finally
App:=Unassigned;
end;
end;
klerk (2004-09-30 14:56:00) [11]excelapplication1.wo можно не смотреть - ошибся при копировании:)
Этой строки нет.