![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Снова про Excel [D5, Win2k]
klerk © (2004-10-01 10:52:00)Вчера не получилось разобраться:(
Нужно в Combobox загрузить имена всех открытых файлов Excel.
На форме: Excelapp1, ExcelWorkBook1, Button, Combobox.
Делаю так:
Combobox1.clear;
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);
finally
ExcelApplication1.Disconnect;
Так он загружает только одно имя, хотя открыто несколько.
YurikGL (2004-10-01 15:23:00) [1]
> klerk (01.10.04 13:55) [13]
цикл
while true do begin
Combobox1.Items.Add(ExcelApplication1.Workbooks[I].name);
inc(i);
end;
Cколько раз повторяется? И почему он останавливается?
> И ещё, посоветуйте литературку (книгу, ресурс) по использованию
> вкладки Servers из Delphi5. Особенно про
http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1084962208
Читать интересное о себе.
klerk (2004-10-01 14:12:00) [2]И если использовать klerk (01.10.04 12:50) [6]
то же самое.
klerk (2004-10-01 13:55:00) [3]YurikGL © (01.10.04 13:43) [12]
Да, ничего. Если не запущено ни одного файла, то пишет - НЕТ.
Если открыто несколько - пишет только 1.
Вот и всё:(
И ещё, посоветуйте литературку (книгу, ресурс) по использованию вкладки Servers из Delphi5. Особенно про ExcelApplication.
А то как ёж в тумане.
YurikGL (2004-10-01 13:43:00) [4]
> Ничего не говорит.
Как ничего не говорит?????? Ексепшн для кода [1] не вылетает что-ли?????
А в екслель чтонибудь написать програмно не пробовал????
klerk (2004-10-01 13:36:00) [5]Ничего не говорит.
Если использовать klerk (01.10.04 12:50) [6], то просто мемо очищает, но потом вообще ничем не заполняет.
А если klerk (01.10.04 10:52) , то находит только одну книгу из нескольких открытых.
Леприкон (2004-10-01 13:22:00) [6]
> YurikGL © (01.10.04 13:13) [9]
врятли, ибо
> Нужно в Combobox загрузить имена всех открытых файлов Excel.
YurikGL (2004-10-01 13:13:00) [7]
> klerk
Слушай, а ты книги с листами не путаешь?
YurikGL (2004-10-01 13:03:00) [8]на > YurikGL © (01.10.04 12:10) [3]
> YurikGL © (01.10.04 12:11) [4]что говорит?
Леприкон (2004-10-01 12:52:00) [9]Наверное какой то неправильный эксель... и наверное он делает неправильные книги. :)
klerk (2004-10-01 12:50:00) [10]uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleServer, Excel97, ComObj, ActiveX;
procedure TForm1.Button1Click(Sender: TObject);
var
Excel:ExcelApplication;
i:integer;
begin
Memo1.Lines.Clear;
try
Excel:=GetActiveOleObject('Excel.Application') as ExcelApplication;
if Excel=nil then
Memo1.Lines.Add('НЕТ')
else
for i:=1 to Excel.Workbooks.Count do
Memo1.Lines.Add(Excel.Workbooks.Item[i].Name);
finally
Excel:=nil;
end;
end;
Memo1 пустое...
Леприкон (2004-10-01 12:31:00) [11]
procedure TForm1.Button1Click(Sender: TObject);
var Excel:ExcelApplication;
i:integer;
begin
try
Excel:=GetActiveOleObject('Excel.Application') as ExcelApplication;
if Excel=nil then Abort;
ComboBox1.Items.Clear;
for i:=1 to Excel.Workbooks.Count do
ComboBox1.Items.Add(Excel.Workbooks.Item[i].Name);
ComboBox1.ItemIndex:=0;
finally
Excel:=nil;
end;
end;
YurikGL (2004-10-01 12:11:00) [12]У меня такое впечатление, что ты подсоединяешься к какому-то другому екселю. Попробуй вывести в него что-нибудь и посмотри в какое приложение выводит.
YurikGL (2004-10-01 12:10:00) [13]
> klerk (01.10.04 11:32) [2]
а с каким ексепшеном вылетает?
klerk (2004-10-01 11:32:00) [14]Всё равно видит только одну книгу:(
YurikGL (2004-10-01 10:58:00) [15]Я тебе там ответил
> 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;
Когда дойдет до конца будет исключение...
Хотя извращение это