フォントの一覧を取得する


Excelでは、そのパソコンにインストールされているフォントを使用できます。しかし、VBAには「使用可能なフォントの一覧を返すプロパティ」がありません。う~ん…困った。どうしよう?APIを使ってWindowsから情報を取得するか?ツールバーの[フォント]ボタンをクリックすればフォント名の一覧が表示されるのになぁ……。そうです!そのリストから一覧を取得すればいいんです。

ここではUserFormを例に解説します。UserFormにリストボックス(ListBox1)とコマンドボタン(CommandButton1)を配置してください。次のコードは、コマンドボタンをクリックすると、使用できるフォント名の一覧をリストボックスに表示します。

Private Sub CommandButton1_Click()
    Dim i As Long
    With Application.CommandBars("Formatting").Controls(1)
        For i = 1 To .ListCount
            ListBox1.AddItem .List(i)
        Next i
    End With
End Sub

フォントを選択できる[フォント]ボタンは、[書式設定]ツールバーの左端にあります。Application.CommandBars("Formatting").Controls(1)は、そのコントロールを表します。このコントロールはリストですので、一般のListBoxと同じようにListCountなどのプロパティを使用できます。

[フォント]ボタンを"左端"とインデックス値で指定するのではなく、名前で指定すればさらに安全でしょう。