使用VBA处理VSTO附加模块中定义的功能区控件

使用VBA处理VSTO附加模块中定义的功能区控件,vba,ms-word,vsto,ribbonx,Vba,Ms Word,Vsto,Ribbonx,我正在尝试为Office Word 365创建一个功能区,其中包含两个编辑框和一个复选框 我有一个宏,我想在以后使用该输入 到目前为止,我已经使用VisualStudio中的Ribbon Designer创建了一个外接程序Ribbon。 外接程序显示在Word中,看起来应该是这样的。我就是不知道如何从编辑框和复选框中获取vba的输入 我的VBA代码如下所示: Sub PasteAndSelectPicture() Application.ScreenUpdating = False Dim

我正在尝试为Office Word 365创建一个功能区,其中包含两个编辑框和一个复选框

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

到目前为止,我已经使用VisualStudio中的Ribbon Designer创建了一个外接程序Ribbon。

外接程序显示在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是来自两个编辑框的输入。

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

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

如果要使用VBA,则需要功能区XML(VSTO中有“导出”选项)。使用功能区XML可以合并到Word docm或dotm文件中


本系列文章中的信息介绍了如何编写在功能区XML中使用控件的VBA代码。还有很多文章,讨论和例子在互联网上,加上一个真正的好书关于这个主题(RibbonX定制办公室2007丝带)。所以,简而言之,我从你的回答中读到的是,我要做的是努力去做实际上“马丁”的努力“没有定义——我不知道你是怎么想的。也不知道VSTO加载项(而不是VBA解决方案)是否适合您。在功能区中使用编辑框并不“困难”(无论如何,对我来说),但它并不像使用VBA用户表单那样简单。