Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Про 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 можно не смотреть - ошибся при копировании:)
Этой строки нет.


Наверх

Титульная страница Поиск, карта сайта Написать письмо