Форум по VBA и MS Office

Word => Макросы в Word => Тема начата: Svetik от 24 мая 2016, 21:56

Название: Word Макросы: Получить в качестве источника строк список шрифтов
Отправлено: Svetik от 24 мая 2016, 21:56
Подскажите пожалуйста, как на созданной мною форме в поле с выпадающим списком в качестве источника строк получить список шрифтов (который отображается в Word при выборе шрифтов).
Название: Re: Word Макросы: Получить в качестве источника строк список шрифтов
Отправлено: Администратор от 25 мая 2016, 09:14

Код для формы
Private Sub CommandButton1_Click()

    Dim arr(), i As Long
   
    '1. Создание ячеек в массиве "arr".
    ReDim arr(1 To Application.FontNames.Count)
    '2. Запись шрифтов, известных программе "Word", в массив "arr".
    For i = 1 To Application.FontNames.Count Step 1
        arr(i) = Application.FontNames(i)
    Next i
    '3. Сортировка шрифтов по алфавиту (в коллекции "FontNames" шрифты отсортированы
        ' по какому-то другому принципу).
    Call Module1.mySort(arr())
    '4. Копирование данных из массива в комбобокс.
    Me.ComboBox1.List = arr()
   
End Sub
[свернуть]

[вложение удалено администратором]
Название: Re: Word Макросы: Получить в качестве источника строк список шрифтов
Отправлено: Svetik от 25 мая 2016, 18:14
Замечательно! Большое спасибо! Все хорошо! Если Вас не затруднит, сделайте еще вариант без шрифтов со знаком "@". Я их никогда не использую.
Название: Re: Word Макросы: Получить в качестве источника строк список шрифтов
Отправлено: Администратор от 25 мая 2016, 19:41
Макрос
Private Sub CommandButton1_Click()

    Dim arr(), i As Long, r As Long
   
    '1. Создание ячеек в массиве "arr".
    ReDim arr(1 To Application.FontNames.Count)
    '2. Запись шрифтов, известных программе "Word", в массив "arr".
    For i = 1 To Application.FontNames.Count Step 1
        ' Стили, которые начинаются "@", не берутся.
        If Left(Application.FontNames(i), 1) <> "@" Then
            r = r + 1
            arr(r) = Application.FontNames(i)
        End If
    Next i
    '3. Удаление с конца пустых элементов, которые остались из-за стилей, начинающихся "@".
    ReDim Preserve arr(1 To r)
    '4. Сортировка шрифтов по алфавиту (в коллекции "FontNames" шрифты отсортированы
        ' по какому-то другому принципу).
    Call Module1.mySort(arr())
    '5. Копирование данных из массива в комбобокс.
    Me.ComboBox1.List = arr()
   
End Sub
[свернуть]
Название: Re: Word Макросы: Получить в качестве источника строк список шрифтов
Отправлено: Svetik от 25 мая 2016, 21:02
Большое спасибо!