Какие-то задачи просто решить через стандартный функционал 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
Hi there to every , for the reason that I am really eager of
reading this weblog’s post to be updated regularly.
It contains nice material.