【问题标题】:Excel addin with ribbon menu带有功能区菜单的 Excel 插件
【发布时间】:2014-01-22 06:36:39
【问题描述】:

我们开发了一个包含一些基本功能的 excel 插件 (.xlam) 文件

例如 MySum(a,b) 并返回我想要的总和等

然后我将文件保存在网络上并使用

将其安装在其他人的 excel 上

文件-->选项-->插件

使 excel 引用网络插件就像魅力一样。每个人都可以在他们的本地 excel 应用程序上使用 MySum() 函数。

现在我想把它提升到一个新的水平,即我想在功能区菜单中加入相同的功能,例如我们创建一个 .exe 文件,用户安装它,用户 excel Ribbon 上会出现一个名为 MySum 的菜单,这将提高添加更多功能的灵活性,并方便最终用户使用。

我听说并使用了一些第三方软件的 Ribbon menu 以同样的方式(使用 xll 文件),我知道它也可以通过 Visual Studio 完成。我只是想就我的场景的最佳方法获得专家意见。

任何帮助表示赞赏!

【问题讨论】:

    标签: visual-studio excel add-in vba


    【解决方案1】:

    使用自定义 UI 编辑器自己制作自定义功能区非常容易。注意 - 这在 Mac 上不起作用,因为我们在 Microsoft 的朋友似乎并不认为能够在两个平台上以相同的方式控制加载项的外观很重要。给我买点啤酒,我会告诉你我的真实想法......

    无论如何,您不需要 Visual Studio 路由。去吧

    http://www.rondebruin.nl/win/s2/win001.htm

    Ron de Bruin 就如何做到这一点进行了出色的演练。只需按照步骤操作即可 - 它有效。您编辑源代码(在转换为插件之前),添加一些描述所需功能区组件的 XML。您可以隐藏现有组件,将新组添加到现有功能区,创建自己的选项卡...制作好看的图标甚至非常容易,让您的按钮看起来很酷/个性化/专业(我使用 Axialis 图标工作室设计了一些图标相当自豪....)

    如果您遇到困难,请询问!

    更新这里是一个 XML 示例,它在 Home 选项卡之后生成一个新选项卡,并放置两组按钮:

    <mso:customUI xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui">
      <mso:ribbon>
      <mso:qat /> 
        <mso:tabs>
          <mso:tab id="myTab" label="Awesome functions" insertAfterMso="TabHome">
            <mso:group id="myGroup1" label="Awesome math" autoScale="true">
              <mso:button id="id_sum" label="sum" image="sigma" size="large" onAction="UI_doMath" /> 
              <mso:button id="id_mult" label="multiply" image="times" size="large" onAction="UI_doMath" /> 
              <mso:button id="id_var" label="variance" image="variance" size="large" onAction="UI_doMath" /> 
            </mso:group>
            <mso:group id="myGroup2" label="Awesome text" autoScale="true">
              <mso:button id="id_bold" label="really bold" image="bold" size="large" onAction="UI_doText" /> 
              <mso:button id="id_italic" label="italicize" image="italic" size="large" onAction="UI_doText" /> 
            </mso:group>
          </mso:tab>
        </mso:tabs>
      </mso:ribbon>
    </mso:customUI>
    

    如您所见,每个组调用自己的函数 - 一组调用UI_doMath,另一组调用UI_doText。潜艇的签名看起来有点像这样:

    Sub UI_doMath(controlID As String)
    
    Select Case controlID
      Case "id_sum"
        call sumTheStuff
      Case "id_mult"
        call multiplyStuff
      Case "id_var"
        call computeVariance
      Case Else
        MsgBox "Unknown button: '" & controlID & "' was clicked!"
        Exit Sub
      End Select
    
    End Sub
    

    这样,一个例程就是功能区组中所有按钮的入口点。我认为使代码更易于维护。对我来说尤其如此,因为我实际上有一个“独立于平台”的版本——也就是说,无论你是从菜单(在 Mac 上)还是从功能区(在 PC 上)选择一个项目,你最终都会得到相同的功能。但这是一种改进,我希望你不需要。

    【讨论】:

    • 我已经实现了菜单栏上的基本按钮,当您单击它时会显示一条消息,效果很好。现在,我该从哪里开始,即如何在网络上部署这个带有“很棒的功能”的 Excel?
    • 将其保存为加载项,然后将其与您之前的加载项完全相同。新功能区将出现...(它嵌入在加载项中)。
    • 跟我想象的一模一样,漂亮!
    • 很高兴你能够让它工作。这是您在实际执行之前一直怀疑的那些“只需按照说明进行操作”的事情之一。一点魔法。感觉很好,不是吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多