Как сделать кнопку панели инструментов с надписью ниже значка с помощью VBA?


Чего не хватает в следующем коде, так как .Caption получает ниже и значок сверху?

Sub SoundLogToolbar()
    Dim cb As CommandBar
    Dim de As CommandBar
    Dim but As CommandBarButton
    Dim picPicture As IPictureDisp

    On Error Resume Next
        MkDir "C:SoundLog"
    On Error GoTo 0

    On Error Resume Next
        MkDir "C:SoundLogPresentations"
    On Error GoTo 0

    Set picPicture = stdole.StdFunctions.LoadPicture("C:SoundLogPresentationsSoundLog.gif")

    On Error Resume Next
        Application.CommandBars("SoundLog").Delete
    On Error GoTo 0

    Set cb = Application.CommandBars.Add("SoundLog", msoBarTop, , True)

    Set but = CommandBars("SoundLog").Controls.Add(msoControlButton)
    but.Visible = True
    With but
        .Picture = picPicture
        .OnAction = "ShowUserForm"
        .Caption = "SoundLog!"
        .TooltipText = "run this to get data!"
        .Style = msoButtonIconAndCaptionBelow
    End With

    cb.Visible = True
End Sub

Со стилем кнопок msoButtonIconAndCaptionBelow это не должно было быть так, как я хочу?

1 2

1 ответ:

Проблема, скорее всего, с картинкой. Вам нужно использовать BMP 16x16 с 256 цветами (см. Эту статью KB). Примечание. Вы также можете установить маску на этом для прозрачности.

Из вашего комментария выше, однако, похоже, что вы хотите сделать это для PowerPoint 2007. Если вы хотите сделать это в Office 2007/2010,вы не должны больше использовать объект CommandBar, а скорее использовать технологию ленты. Вот действительно хорошая статья о этом. Если вы используете VBA, пользовательский редактор ленты незаменим и вот отличная целевая страница, чтобы вы начали работу с RibbonX с VBA (примеры для Excel 2007, но это то же самое в PPT/WRD).