Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Технологии
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.08.2010, 11:24
sanello sanello вне форума
Прохожий
 
Регистрация: 10.08.2010
Сообщения: 8
Репутация: 10
По умолчанию Pабота с объектами Excel (VBA)

Здравствуйте!

Возникла необходимость программно заполнять лист Excel, сложность в том?, то на этом листе есть компоненты типа ComboBox, RadioGroup и т.д., как до них добраться программно?
Ответить с цитированием
  #2  
Старый 10.08.2010, 14:11
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Добраться можно так :
Код:
Var
  i : integer;
  cn : string;
  V : variant;

begin
  ListBox1.Items.Clear;
  for i:=1 to Excel.ActiveWorkbook.ActiveSheet.Shapes.Count do
    begin
      V := Excel.ActiveWorkbook.ActiveSheet.Shapes.Item(i);
      cn := V.name;
      ListBox1.Items.Add(cn);
  end;
end;

А вот как использовать их свойства - не знаю (не копался).
Ответить с цитированием
  #3  
Старый 10.08.2010, 14:39
sanello sanello вне форума
Прохожий
 
Регистрация: 10.08.2010
Сообщения: 8
Репутация: 10
По умолчанию

А вот как использовать их свойства - не знаю (не копался).

Может кто знает хороший хелп по этой теме
кинте ссылку плиз
Ответить с цитированием
  #4  
Старый 10.08.2010, 15:09
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

при установке microsoft office нужно выбрать установить справку по visual basic reference
тогда будете иметь справку по всей объектной модели офиса
Ответить с цитированием
  #5  
Старый 10.08.2010, 17:43
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А еще лучше запустить в самом екселе запись макроса и посмотреть какие объекты доступа используются.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 10.08.2010, 18:24
sanello sanello вне форума
Прохожий
 
Регистрация: 10.08.2010
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
А еще лучше запустить в самом екселе запись макроса и посмотреть какие объекты доступа используются.

Макрос то я записывал, но когда в ComboBox изменяешь значение
в макрос ничего не записывается
Ответить с цитированием
  #7  
Старый 11.08.2010, 11:00
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Не знаю, насколько это полезно (в данном контексте), но если привязать "контрол" к конкретной Excel ячейке (по правой кнопке меню вызвать редактор свойств и записать адрес соотв. ячейки в свойство LinkedCell), то достаточно делать просто обмен инфой с данной ячейкой. Автоматически это затронет и "контрол".
Например.
Если на Excel-лист положить ComboBox и привязать его к ячейке $A$1, то этот код работает :
Код:
procedure TForm1.Button3Click(Sender: TObject);
Var
  Vx : variant;
begin
  Excel.ActiveWorkbook.ActiveSheet.Cells[1,1]:='22222';
  Vx:=trim(Excel.ActiveWorkbook.ActiveSheet.Cells[1,1]);
  ShowMessage('1-  '+Vx);
  Excel.ActiveWorkbook.ActiveSheet.Cells[1,1]:='44444';
  Vx:=trim(Excel.ActiveWorkbook.ActiveSheet.Cells[1,1]);
  ShowMessage('2-  '+Vx);
end;
Ответить с цитированием
  #8  
Старый 11.08.2010, 16:07
sanello sanello вне форума
Прохожий
 
Регистрация: 10.08.2010
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от roamer
Не знаю, насколько это полезно (в данном контексте), но если привязать "контрол" к конкретной Excel ячейке (по правой кнопке меню вызвать редактор свойств и записать адрес соотв. ячейки в свойство LinkedCell), то достаточно делать просто обмен инфой с данной ячейкой. Автоматически это затронет и "контрол".
Например.
Если на Excel-лист положить ComboBox и привязать его к ячейке $A$1, то этот код работает :
Код:
procedure TForm1.Button3Click(Sender: TObject);
Var
  Vx : variant;
begin
  Excel.ActiveWorkbook.ActiveSheet.Cells[1,1]:='22222';
  Vx:=trim(Excel.ActiveWorkbook.ActiveSheet.Cells[1,1]);
  ShowMessage('1-  '+Vx);
  Excel.ActiveWorkbook.ActiveSheet.Cells[1,1]:='44444';
  Vx:=trim(Excel.ActiveWorkbook.ActiveSheet.Cells[1,1]);
  ShowMessage('2-  '+Vx);
end;
дело в том что это не мой Excel файл, моя задача его заполнить и получить результат
Ответить с цитированием
  #9  
Старый 14.08.2010, 14:08
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  XL: Variant;
begin
try
  XL:= CreateOleObject('Excel.Application');
  XL.WorkBooks.Open(ExtractFilePath(Application.ExeName)+'1.xls');
  XL.Visible:= True;
  XL.ActiveWorkbook.ActiveSheet.ComboBox1.AddItem('bbb');
  XL.ActiveWorkbook.ActiveSheet.ComboBox1.AddItem('aaa');
  XL.ActiveWorkbook.ActiveSheet.ComboBox1.ListIndex:= 1;
except
  ShowMessage('Error, error, Error');
end;
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:14.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter