КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Пример динамического способа формирования объектов на форме VBA Excel
На самом деле механизм позднего связывания необходим для реализации объектно-ориентированных технологий, которые, в частности, используют динамического определение объектов в ходе выполнения программы. Достаточно типичной задачей является использование в приложении неких внешних ActiveX-объектов (приложений или объектов). Например, вы хотите обратиться к приложению Excel. Sub Late() ' Пример позднего связывания с внешним объектом Excel Dim ObjExcel As Object 'Описываем переменную типа Object Set ObjExcel = CreateObject("Excel.Application") 'и создаем объект на базе класса Excel.Application'задаем свойства книги и листаWith ObjExcel.WorkBooks.Add.ActiveSheet.Name = "37 вопрос".Visible = True MsgBox(“Имя активного листа “) & ActiveSheet.Name End With ObjExcel.Quit Set ObjExcel = NothingEnd SubДостоинство раннего связывания: работают подсказки и синтаксический контроль при создании исполняемого модуля. Но этот вариант (точнее вся программа, независимо от того было или не было обращение к EarlyBinding) будет работать только в случае наличия ссылки (Project|References) на реально существующее приложение. Достоинство второго варианта — в возможности динамической настройки на используемый объект в ходе выполнения программы. Причем ссылку на него не нужно устанавливать заранее, поэтому при физическом отсутствии Excel на компьютере, ошибка произойдет только в момент выполнения данной процедуры (не говоря о том, что эту ошибку можно программно обработать и продолжить работу в другом режиме). Пример. Используя объектную модель MS Excel, решить систему нелинейных уравнений при начальных условиях x (0)=0 и y (0)=0. Dim ObjExcel As Object, s As String, sF As String Private Sub Command1_Click() Const xlDoNotSaveChanges = 0 Set ObjExcel = CreateObject("Excel.Application") With ObjExcel .WorkBooks.Add .ActiveSheet.Name = "Solver" .Visible = True .DisplayAlerts = False End With ObjExcel.Range("A1").Name = "x" ObjExcel.Range("A1").Value = Text3 ObjExcel.Range("A2").Name = "y" ObjExcel.Range("A2").Value = Text4 Func$ = "$A$3" 'Целевая функция XY$ = "$A$1:$A$2" 'Изменяемые ячейки sF = "=(" & Text1 & ")^2+(" & Text2 & ")^2" 'Введение формулы в ячейку ObjExcel.Range("A3").Formula = sF 'Полный путь к файлу Solver.xla заключен в дополнительные апострофы s = "'C:\Program Files\Microsoft Office\OFFICE11\Library\SOLVER\Solver.xla'" 'Параметры Поиска Решения ObjExcel.Run s & "!Solver.SolverOptions", 100, 100, 0.000001, False, False, 1, 1, 1, 5, False, 0.0001, False ' Поиск.Решения ObjExcel.Run s & "!Solver.SolverOK", Func, 3, 0, XY ObjExcel.Run s & "!Solver.SolverSolve" 'Выполнить Поиск Text3 = ObjExcel.Cells(1, 1) 'Вывод решения системы в поля Text4 = ObjExcel.Cells(2, 1) ObjExcel.ActiveWindow.Close SaveChanges:=xlDoNotSaveChanges ObjExcel.Quit End Sub Private Sub Command2_Click() End End Sub Private Sub Form_Load() Caption = "Решение системы НУ с помощью программы 'Поиск решения'" Command1.Caption = "Поиск решения" Command2.Caption = "Выход" Text3 = "" Text4 = "" Text1 = "x^2+y^2-1" Text2 = "2*x+3*y-0.9" End Sub Private Sub Form_Unload(Cancel As Integer) Set ObjExcel = Nothing End Sub
Дата добавления: 2014-12-23; Просмотров: 780; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |