Консультация № 66354
10.12.2006, 15:04
0.00 руб.
0 2 2
Здравствуйте! Как в VBA вызывать API-функции?
Как убрать у формы UserForm1 заголовок со всеми кнопками(закрыть,свернуть...)?

Обсуждение

Неизвестный
10.12.2006, 16:18
общий
это ответ
Здравствуйте, Rewer8!
1. Для начала её нужно описать:
[Public | Private] Declare Sub name Lib "libname" [Alias "aliasname"] [([arglist])]
а потом вызывать как обычную функцию... пример:
Declare Sub MessageBeep Lib "User32" (ByVal N As Integer)
...
Call MessageBeep(-1)

2. Поэкспериментируйте со свойствами формы BorderStyle, CloseButton, MinMaxButtons... (к сожалению VB под руками нет, а в VBA это похоже не работает)
Неизвестный
11.12.2006, 17:41
общий
это ответ
Здравствуйте, Rewer8!

Я не нашел способа убрать в VBA заголовок формы, хотя в VB это элементарно делается. Простейший пример использования API в VBA :

- на лист Word или Excel (неважно) поместите кнопку, используя панель интрументов;
- в режиме конструктора дважды кликните на кнопке и окажитесь в процедуре обработки события Commandbutton1_Click();
- введите строку "Call AllocConsole";
- добавьте модуль в режиме редактора VBA;
- в разделе General модуля напишите: "Declare Function AllocConsole Lib "kernel32" () As Long"
- Сохраните документ и жмите на кнопку (не в режиме конструктора !!!)

ПРЕДВАРИТЕЛЬНО СОХРАНИТЕ ЗАРАНЕЕ ДОКУМЕНТ ПЕРЕД НАЖАТИЕМ НА КНОПКУ !

Я использовал эту функцию - на первый взгляд, бесполезную, однако реально ее можно использовать для запуска batch-файла, к примеру. К тому же она крайне лаконична в объявлении. Вы можете использовать те API, которые вам нужны.
Форма ответа