|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Pабота с объектами Excel (VBA)
Здравствуйте!
Возникла необходимость программно заполнять лист 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; |
#8
|
|||
|
|||
Цитата:
|
#9
|
||||
|
||||
Код:
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; |