Нет, никаких специальных библиотек для использования не требуется Alias
; все это встроено в язык.
Но ваше заявление неверно. У вас есть дополнительный набор скобок перед Alias
, которые запутывают компилятор.
Помимо чистого синтаксиса, второй параметр (nSize
) на самом деле является указателем на Long
, что означает, что вам нужно передать его ByRef
в VBA.
Таким образом, пересмотренная декларация будет выглядеть следующим образом:
Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, ByRef nSize As Long) As Long
Возвращаемое значение будет 1, если функция завершится успешно, или 0, если произойдет сбой.