Студопедия

КАТЕГОРИИ:


Архитектура-(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 позволяет не описывать переменные или приводить только частичное описание: указывается область видимости без указания типа. По-видимому, эта возможность помогает быстро написать маленькую одноразовую программку. В любом другом случае переменные необходимо описывать полностью!

Имена переменных и объектов должны быть осмысленными и такими, чтобы они быстрее находились в выпадающем по Ctrl+J списке доступных объектов. Рекомендуется следующий подход: все имена должны быть составлены из латинских букв и цифр, причем первый символ – буква, имена элементов управления и других ActiveX объектов должны начинаться с оставшихся заглавных букв типа (то есть вид объекта), затем знака подчеркивания «_», затем – осмысленное название.

Описывая переменную и указывая ее тип, вы, во-первых, ограждаете себя от ошибок, т.к. никогда не получится так, что разным сущностям вы нечаянно дали одинаковые имена. Во-вторых, вы, вообще говоря, экономите память, т.к. не типизированные переменные автоматически приобретают тип Variant, занимая при этом больше места, чем необходимо. Наконец, в-третьих, подсказчик доступных объектов может помогать вам, подсказывая только объекты тех типов, которые могут использоваться в текущем месте. Правда, в среде VBA нет такого ограничения.

Работая с объектами на VBA можно воспользоваться одним из двух возможных способов: механизмом раннего связывания и механизмом позднего связывания. При раннем связывании Вы при описании сразу указываете тип объектной переменной. Результат раннего связывания состоит в том, что далее редактор VBA (если Вы нажмете Ctrl+J) подсказывает Вам свойства и методы этого объекта.

При позднем связывании в описании переменной вы указываете тип Object. При этом вы сообщаете транслятору (компилятору), что это объектная переменная, но ничего конкретного о структуре объекта не сообщаете. Очевидно, что после такого описания редактор не в состоянии подсказать вам свойства и методы этого объекта. Только при выполнении программы Вы можете решить, на какой именно объект будет ссылаться эта объектная переменная, присвоив объектной переменной некоторый объект.

Преимущество позднего связывания состоит в том, что с помощью одной и той же объектной переменной Вы можете обрабатывать объекты разных типов. Впрочем, вам все равно в программе придется разобраться с тем, что это за объект. Несколько более реальный пример преимущества следующий: если вы в программе формируете экземпляр при помощи функции GreateObject, то, вероятно, вы не знаете, объект какого типа вы получите. В этом случае можно сначала описать переменную типа Object, а затем в отладчике выполнить оператор с GreateObject и посмотреть в окне Watch получившийся тип переменной. Затем следует прервать выполнение программы и указать верный тип вместо Object.

Если речь идет о внешних объектах, то для того чтобы редактор «узнал» эти объекты, следует сообщить ему, в какой библиотеке лежит описание и код объекта. То есть необходимо подключить в пункте Tools – References требуемые библиотеки.dll,.ocx и т.п. В частности, если в скрипте к Word-документу вы хотите обратиться к Excel-документу, необходимо в появившемся списке библиотек найти Microsoft Excel 12.0 Object Library. Версия библиотеки у вас может быть другая!

Необходимо заметить, что не существует хорошего способа определить, в какой библиотеке находится нужный объект. Ориентироваться можно только на осмысленность названия. Хотя это не всегда помогает. Например, трудно догадаться, что объект FileSystemObject находится в библиотеке Microsoft Scripting Runtime.

Ниже в примере показан фрагмент программы до того, как вы смогли определить точный тип объекта, и после. Важно, что редактор поможет вам ввести последнюю строку при раннем связывании (см. справа).

Сначала Dim ob as Object, wb as Object Set ob=CreateObject(“Excel.Application”) Set wb=ob.Workbooks.Open(“ras.xsl”) Позже Dim ob as Excel.Application, wb as Excel.Workbook Set ob=CreateObject(“Excel.Application”) Set wb=ob.Workbooks.Open(“ras.xsl”)

Дополнительные элементы управления (ActiveX –объекты)

На форме Вы можете расположить не только базовые элементы управления, но и дополнительные ActiveX объекты. Для этого перейдите в редакторе VBA в форму, после чего в меню Tools Вы обнаружите пункт Additional Controls. Выберите интересующий Вас элемент управления, и он появится на панели инструментов. Как работать с этим элементом управления можно узнать из справочника, обычно поставляемого вместе с включающей его библиотекой. Достаточно много сведений вы можете найти в справочнике MSDN.

<== предыдущая лекция | следующая лекция ==>
Коллекция | Доступ к внешним COM-серверам
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 724; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.