19-11-2017
колонтитул в word 2007, 0000002111

Функции host-приложений.

Функции host-приложения, доступные для VBA, не являются частью VBA, они являются частью host-приложения. Например, функции рабочих листов Excel не являются частью программирования языка VBA, но они являются частью host-приложения Excel. Не каждое host-приложение VBA содержит функции, которые можно использовать в VBA. Отсюда, если вы собираетесь использовать процедуры в различных приложениях, не стоит использовать функции host-приложения.

Чтобы использовать функцию host-приложения необходимо обратиться к ней посредством программного объекта Application. Например:

MsgBox Application.Min(1, 5, 7, 9)

Обратите внимание, что за словом Application следует точка (точка-разделитель), а затем имя функции без пробелов.

Результат функции Excel нельзя игнорировать. Необходимо всегда включать круглые скобки в вызов функции Excel и всегда каким-то образом использовать результат функции: как значение в выражении, аргумент для другой функции и проч.

Функции host-приложения, имеющие те же имена, что и функции VBA, не обязательно выполняют те же самые задачи и выдают те же самые результаты. Например, Excel-функция LOG и VBA-функция LOG - это не одно и то же.

Следует также иметь в виду, что не каждая функция host-приложения доступна VBA. Для проверки доступности функции необходимо воспользоваться инструментом Object Browser среды VBA. Чтобы узнать, какие функции имеются в приложении и узнать, каково назначение и как использовать эти функции, необходимо обратиться к справочной системе приложения (например, произвести поиск по слову functions).

В заключение скажем о полезном дополнительном свойстве функции InputBox приложения Excel, которого нет в VBA. InputBox в Excel имеет необязательный параметр Type, задающий тип вводимого значения. Это можно использовать в качестве дополнительного контроля вводимой информации.

Праметр Type может принимать следующие значения:

Значение Что означает
0 Формула
1 Число
2 Текст
4 Логическое значение
8 Ссылка на ячейку, как объект диапазона
16 Значение ошибки, такое как #N/A
64 Массив значений

Можно использовать в качестве аргумента Type сумму доступных значений. Например, для ввода как такстовых, так и числовых значений можно задавать значение 3 (1+2).

Как определить полное имя Host-приложения?

Предположим, вы создали собственный элемент управления (UserControl) и хотите, чтобы он смог узнать каталог, где находится его родительское приложение (откуда он был вызван в данный момент). В общем случае можно просто предусмотреть передачу этих сведений с помощью установки соответствующих свойств элемента управления. Но иногда бывает удобнее использовать код, который определит полный путь родительского EXE-модуля, независимо от того, захотела вызывающая программа сделать такую установку или нет.

Для этого включите в свой элемент управления следующий код:

Private Declare Function GetModuleFileName Lib _
   "kernel32" Alias "GetModuleFileNameA" (ByVal _
   hModule As Long, ByVal lpFileName As String, ByVal _
   nSize As Long) As Long

Private Sub UserControl_Paint()
    ' определить каталог родительского приложения

  Dim AppPath As String
  Const MAX_PATH = 260

  UserControl.Cls
  AppPath = Space$(MAX_PATH)
  If GetModuleFileName(0, AppPath, Len(AppPath)) Then
    AppPath = Left$(AppPath, InStr(AppPath, vbNullChar) - 1)
    UserControl.Print AppPath
  Else
    UserControl.Print "Не смогли определить!"
  End If
End Sub
колонтитулы в word 2007, 000000211111

Добавить в Мой Мир  Добавить в ВКонтакте.ру  Добавить в Facebook  Добавить в LiveJournal  Добавить в twitter

колонтитулы в word 2007, 000000211
нумерация страниц в word 2007, 00000021111
Яндекс.Метрика
Копирование возможно при указании прямой индексируемой гиперссылки
п»ї
0000002