【问题标题】:Working with Ribbon controls defined in a VSTO add-in using VBA使用 VBA 处理在 VSTO 加载项中定义的功能区控件
【发布时间】:2019-04-10 21:17:47
【问题描述】:

我正在尝试为 Office Word 365 创建一个带有两个编辑框和一个复选框的功能区。

我有一个宏,我想在之后使用该输入。

到目前为止,我已经使用 Visual Studio 中的功能区设计器来创建加载项功能区。

插件显示在 Word 中,看起来应该是这样。我只是不知道如何从编辑框和复选框获取输入到 vba。

我的 VBA 代码如下所示:

Sub PasteAndSelectPicture()

Application.ScreenUpdating = False

Dim ils As Word.InlineShape
Dim shp As Word.Shape
Dim lNrIls As Long
Dim lNrShp As Long
Dim rngDoc As Word.Range
Dim rngSel As Word.Range

Set rngDoc = ActiveDocument.Content
Set rngSel = Selection.Range
rngDoc.End = rngSel.End + 1

'Get an InlineShape
lNrIls = rngDoc.InlineShapes.Count
Selection.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile, Placement:=wdInLine, DisplayAsIcon:=False

Debug.Print rngDoc.InlineShapes.Count, lNrIls

Set ils = rngDoc.InlineShapes(lNrIls + 1)
ils.Width = Application.CentimetersToPoints(VAR1)

Set shp = ils.ConvertToShape
shp.IncrementRotation VAR2

shp.ConvertToInlineShape

Application.ScreenUpdating = True

End Sub

我希望 VAR1 和 VAR2 作为两个编辑框的输入。

【问题讨论】:

    标签: vba ms-word vsto ribbonx


    【解决方案1】:

    根据设计,不能从不包含 Ribbon XML 的项目访问 Ribbon 控件。虽然 VSTO 功能区设计器“很高兴”,但您不能将它与 VBA 代码一起使用 - 只能与包含功能区的 VSTO 项目中的代码一起使用。

    这意味着您要么需要在 VSTO 项目中编写 VB.NET 代码,要么需要以不同的方式创建功能区 XML。

    如果您想使用 VBA,那么您需要 Ribbon XML(VSTO 中有一个“导出”选项)。使用Custom UI Editor,功能区 XML 可以合并到 Word 文档或 dotm 文件中。

    Customizing the 2007 Office Fluent Ribbon for Developers 系列文章中的信息描述了如何编写使用功能区 XML 中的控件的 VBA 代码。 Internet 上也有很多文章、讨论和示例,还有一本关于该主题的非常好的书籍(RibbonX 自定义 Office 2007 功能区)。

    【讨论】:

    • 谢谢!所以,简而言之,我从你的回复中了解到,我正在尝试做的事情实际上需要付出相当大的努力?
    • @Martin“相当努力”是未定义的——我无法知道你认为那是什么。 VSTO 加载项(而不是 VBA 解决方案)是否适合您。在功能区中使用编辑框并不“困难”(无论如何对我来说),但它不像使用 VBA 用户窗体那么简单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 2019-04-13
    • 1970-01-01
    • 2023-01-31
    • 2021-03-01
    • 2021-11-24
    • 2018-05-07
    相关资源
    最近更新 更多