Использование Win32 api в VBA

Какие-то задачи просто решить через стандартный функционал VBA, ради решения других — приходится обращаться к сторонним библиотекам — вроде kernel32.dll или user32.dll. Использовать их можно благодаря win32 api. На самом деле применений у win32 довольно много — если описывать их все, то можно написать целую книгу страниц так на 1000.

Вот например код VBA, который позволяет получить имя пользователя — полезен для создания условно универсальных макросов, для которых не нужно будет каждый раз объявлять константу по имени пользователя.

[code language=»vb»]
Private Declare PtrSafe Function GetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Function apicGetUserName() As String
‘Call to apiGetUserName returns current user.
Dim lngResponse As Long
Dim strUserName As String * 32

lngResponse = GetUserName(strUserName, 32)
apicGetUserName = Left(strUserName, InStr(strUserName, Chr$(0)) — 1)
Debug.Print apicGetUserName

End Function
[/code]

Функций много — можно посмотреть здесь

PS Полезная ссылка с примерами использования Win32 api в VBA

Оставьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.