![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте!
Возникла необходимость программно заполнять лист Excel, сложность в том?, то на этом листе есть компоненты типа ComboBox, RadioGroup и т.д., как до них добраться программно? |
|
#2
|
|||
|
|||
|
Добраться можно так :
Код:
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
|
|||
|
|||
|
А вот как использовать их свойства - не знаю (не копался).
Может кто знает хороший хелп по этой теме кинте ссылку плиз |
|
#4
|
||||
|
||||
|
при установке microsoft office нужно выбрать установить справку по visual basic reference
тогда будете иметь справку по всей объектной модели офиса |
|
#5
|
||||
|
||||
|
А еще лучше запустить в самом екселе запись макроса и посмотреть какие объекты доступа используются.
|
|
#6
|
|||
|
|||
|
Цитата:
Макрос то я записывал, но когда в ComboBox изменяешь значение в макрос ничего не записывается |
|
#7
|
|||
|
|||
|
Не знаю, насколько это полезно (в данном контексте), но если привязать "контрол" к конкретной 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; |