Word 2016 for mac - 任何类型的自定义控件

时间:2015-07-13 11:08:30

标签: vba ms-word ms-office word-vba word-vba-mac

我有一个Word插件。在Office办公室,它可以使用功能区XML显示自定义功能区。在Office 2011 for mac上,它会忽略此功能区,但我可以添加一个CommandBar(顶部的下拉菜单)。这些允许我为我的各种宏创建一个菜单系统。

在Office 2016中,当我尝试创建命令栏时,出现错误:"Method 'Add' of Object 'CommandBarControls' failed。它也不允许使用自定义色带,它不会拾取dotm文件中的XML(也不会让我手动更改色带)。

这引出了一个问题 - 有什么方法,任何方式,我可以在某个地方添加一些按钮来解雇这个版本的办公室的宏?我最好使用VBA创建一些东西(目前,命令栏是从VBA添加的。)

由于这适用于Office for Windows(预览版)以及旧版Office for Windows,以及Office 2011 for mac - 为什么这不适用于此?

作为参考,这是我从http://scriptorium.serve-it.nl/view.php?sid=14

中提取的用于创建命令栏的测试代码
Sub CreateCommandBar()
    Dim myCB As CommandBar
    Dim myCBtn1 As CommandBarButton
    Dim myCBtn2 As CommandBarButton
    Dim myCPup1 As CommandBarPopup
    Dim myCPup2 As CommandBarPopup
    Dim myCP1Btn1 As CommandBarButton
    Dim myCP1Btn2 As CommandBarButton

    ' Delete the commandbar if it exists already
    ' On Error Resume Next
    Application.CommandBars("example").Delete

    ' Create a new Command Bar
    Set myCB = CommandBars.Add(Name:="example", Position:=msoBarFloating)

    ' Add button 1 to this bar
    Set myCBtn1 = myCB.Controls.Add(Type:=msoControlButton)
    With myCBtn1
     .Caption = "1st level Cap."
     .Style = msoButtonCaption   '<- will force the caption text to show on your button
    End With

    ' Add popup menu 1 to this bar
    Set myCPup1 = myCB.Controls.Add(Type:=msoControlPopup)
    myCPup1.Caption = "Statistic"

    ' Add button 1 to popup menu 1
    Set myCP1Btn1 = myCPup1.Controls.Add(Type:=msoControlButton)
    With myCP1Btn1
     .Style = msoButtonAutomatic
     .FaceId = 487
    End With

    ' Add button 2 to popup menu 1
    Set myCP1Btn1 = myCPup1.Controls.Add(Type:=msoControlButton)
    With myCP1Btn1
     .Caption = "Click me!"
     .Style = msoButtonIconAndCaption
     .FaceId = 59
     .OnAction = "SubItworks"
    End With

    ' Add a second button to this bar
    Set myCBtn2 = myCB.Controls.Add(Type:=msoControlButton)
    With myCBtn2
     .FaceId = 17  ' <- Face Id 17 is a barchart icon
     .Caption = "Descriptive stat"
    End With

    ' Show the command bar
    myCB.Visible = True
End Sub

Sub SubItworks()
    MsgBox ("Eureka, it works!")
End Sub

2 个答案:

答案 0 :(得分:2)

在Word 2011中创建一个新的.dotm文件,运行CreateCommandBar()宏,然后将工具栏(使用管理器对话框)和SubItworks()宏复制到.dotm文件。将.dotm文件放在Word 2016的启动文件夹中,您将在功能区的加载项选项卡中看到工具栏。

虽然它有问题 - 似乎唯一有效的控件是顶级按钮。单击弹出按钮不会显示菜单,单击顶级按钮时也无法正确绘制。

我有幸在Word 2011中手动创建一个新工具栏(查看:工具栏:自定义工具栏和菜单...),然后通过将宏拖动到工具栏来创建按钮。一旦获得对工具栏的引用,您还可以使用Visual Basic的本地窗口手动设置按钮属性。

只要在运行时不更改任何按钮属性,以这种方式创建的按钮似乎表现正常。

答案 1 :(得分:0)

Office 2016 for Mac now supports Ribbon XML customization。目前是实验/选择加入,但默认情况下会在“2016年初”启用