Word VBA Макросы: Получить список форм

Автор Посетитель, 26 ноября 2017, 11:49

Посетитель

Добрый день!
А можно как-то получить список форм моего проекта?

Администратор

Макрос
Sub макрос()

    Dim project As Object, module As Object
    Dim UFNames As Collection
    Dim i As Long
   
   
    '1. Присваиваем vba-проекту активного файла имя "project".
        ' Чтобы удобно читать и писать код. Далее к vba-проекту будем
        ' обращаться по имени "project".
    Set project = ActiveDocument.VBProject
   
    '2. Запись в коллекцию "UFNames" имён vba-форм.
    ' Создание коллекции. В эту коллекцию будем записывать имена форм.
    Set UFNames = New Collection
    ' Цикл по всем модулям проекта.
    For Each module In project.VBComponents
        ' Если модуль это UserForm.
        If module.Type = 3 Then
            UFNames.Add Item:=module.Name
        End If
    Next
   
    '3. Если в проекте нет vba-форм.
    If UFNames.Count = 0 Then
        ' Сообщение.
        MsgBox "В проекте нет форм.", vbInformation
        ' Завершение макроса.
        Exit Sub
    End If
   
    '4. Вывод в View - Immediate Window имён форм из коллекции.
    For i = 1 To UFNames.Count
        Debug.Print UFNames(i)
    Next i
   
End Sub
[свернуть]

Посетитель


Посетитель

Запустил, пишет, что в проекте нет форм. Может, запускать как-то надо по-другому? У меня несколько форм в проекте!

Администратор

Макросу же надо указать проект. Макросу откуда знать, для какого проекта вам нужна информация.
В пункте 1 укажите, с каким проектом работать.

Администратор

Может вам это подойдёт. Здесь макрос обращается к проекту, в котором находится запускаемый макрос:

    '1. Присваиваем vba-проекту имя "project".
        ' Чтобы удобно читать и писать код. Далее к vba-проекту будем
        ' обращаться по имени "project".
    Set project = ThisDocument.VBProject

Посетитель

Да, так сработало!
Все отлично, большое спасибо!