VBA: есть ли способ получить / прочитать атрибуты модуля? - PullRequest
2 голосов
/ 14 января 2020

В Visual Basi c для приложений (VBA) вы можете установить атрибуты модуля или переменной, используя ключевое слово Attribute. Например,

    ' Header
Attribute VB_Name = "ClassOrModuleName"
Attribute VB_GlobalNameSpace = False ' ignored
Attribute VB_Creatable = False ' ignored
Attribute VB_PredeclaredId = False ' a Value of True creates a default global instance
Attribute VB_Exposed = True ' Controls how the class can be instanced.

'Module Scoped Variables
Attribute variableName.VB_VarUserMemId = 0 ' Zero indicates that this is the default member of the class.
Attribute variableName.VB_VarDescription = "some string" ' Adds the text to the Object Browser information for this variable.

'Procedures 
Attribute procName.VB_Description = "some string" ' Adds the text to the Object Browser information for the procedure.
Attribute procName.VB_UserMemId = someInteger
    '  0: Makes the function the default member of the class.
    ' -4: Specifies that the function returns an Enumerator.

Более подробная информация о них: https://christopherjmcclellan.wordpress.com/2015/04/21/vb-attributes-what-are-they-and-why-should-we-use-them/

Я думал, есть ли способ получить / прочитать эти атрибуты внутри кода? Например, что-то вроде

Sub BarMacroName()
'
' BarMacroName Macro
' Bar Macro Description
'
    Dim var

    MsgBox VB_Description 'display this module's description
    MsgBox VB_Name 'display this module's description

End Sub

Не только описание и имя, но вообще, можем ли мы на самом деле прочитать атрибуты внутри самого кода?

Редактировать: я специально ищу посмотрим, сможете ли вы извлечь значение атрибута в самом скрипте VBA. Я исследую уязвимости вредоносных программ, и мне было любопытно, может ли кто-нибудь внедрить вредоносный код, скажем, в описание модуля VBA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...