我正在使用vb.net将一个Word vba项目移植到VSTO项目中,该项目包含一些较旧的WordBasic元素。我需要做的任务之一是以编程方式将字符串或表单上文本框的内容保存到Word模板中的自动图文集值。
在旧项目中,这很容易。该命令看起来像这样:
WordBasic.SetAutoText "AT Name", strSomeValue, 0
在vb.net中尝试这个:
'declarations
Public appWord As Word.Application
Public tplMyTpl As Word.Template
Public doc As Word.Document
'Get the template
appWord = Me.Application
doc = appWord.ActiveDocument
tplMyTpl = doc.AttachedTemplate
'try saving autotext
tplMyTpl.AutoTextEntries.Add("AT Name", strSomeValue)
不起作用,因为AutoTextEntries.Add方法仅接受该值作为Word.Range。使用上面的代码在运行时抛出类型转换错误。它必须看起来像:
dim sel as Word.Selection = appWord.Selection
tplMyTpl.AutoTextEntries.Add("AT Name", sel.Range)
问题是我不想将字符串插入到我的文档中,选择它作为范围,保存自动图文集条目然后删除文本。这似乎是非常草率的编码。
答案 0 :(得分:1)
您仍然可以在VSTO中使用WordBasic
。只需通过Word.Application
对象引用来调用它,例如:
appWord.WordBasic.SetAutoText("AT Name", strSomeValue, 0)
在Word 2013中经过测试和使用。