gifts2017

Win Api & VBA

Опубликовал slimper (slimper) в раздел Программирование - Практика программирования

Как уменьшить количество строк кода при вызове функций Windows Api  в модуле VBA? Помочь решить этот вопрос может библиотека типов Win32.tlb от Брюса Мак-Кинни (Bruce McKinney).

Данная библиотека была собрана для упрощения вызова функций API  в VB4  в далеком 1995 году. Но, несмотря на такой солидный возраст ей можно с успехом пользоваться и сейчас в модулях VBA при обращении к функциям API. 

Рассмотрим пример использования библиотеки в Excel. Регистрация  библиотеки в системе не требуется, поэтому копируем библиотеку в любую папку, например,  в папку,  где расположена книга Excel или в папку Windows. Открываем книгу, переходим в редактор кода (Alt+F11), далее меню Tools->References, и в диалоговом окне нажав кнопку Browse выбираем файл Win32.tlb в искомой папке.Связь с библиотекой установлена, теперь можно посмотреть объекты данной библиотеки – меню View -> Object Browser (F2), в  списке библиотек выбираем Win.

Теперь, собственно пример использования библиотеки – вызов функции FindWindow (поиск окна верхнего уровня).

Private Sub StartCalculator()
'Запуск калькулятора
Dim hProg As Long, ret As Long, hwnd As Long
On Error Resume Next
  hwnd = FindWindow("SciCalc", sNullStr)
  If hwnd > 0 Then
    Call SetForegroundWindow(hwnd)
  Else
    hProg = Shell("calc.exe ", vbNormalFocus)
  End If
End Sub 

Здесь использованы две функции из библиотеки типов:  FindWindow – происк окна верхнего уровня по имени класса (можно искать и по заголовку окна, используется второй параметр функции), и SetForegroundWindow – перевод найденного окна на передний план. Как видно из примера, использование библиотеки типов позволяет вызывать функции Win Api, как встроенные функции VBA.

Приложение содержит библиотеку Win32.tlb и книгу Excel c тремя примерами: чтение, запись ini- файлов и чтение ключей реестра. 

 

Скачать файлы

Наименование Файл Версия Размер
Библиотека типов 17
.rar 97,34Kb
22.04.12
17
.rar 97,34Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Олег Шалимов (CaSH_2004) 21.06.15 09:50
Интересно как это связано с 1С?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа