我正在编写一个 Excel VBA 宏来将MS Word 表单翻译成各种语言。原始英语短语列在 A 列中,相应的翻译列在列 B、C 等中。在表格的文本部分中用英语替换翻译没有问题,但我正在努力更改占位符文本内容控制。(我应该提到我仅限于使用 Office 2010,因为这是公司仍然拥有的。)
这是我的代码:
Dim frm As Word.Document, cc As ContentControl
Set frm = Documents.Open("C:\[document]", False)
If frm.FormsDesign = False Then 'make sure doc is in Design Mode
frm.ToggleFormsDesign
End If
For Each cc In frm.ContentControls
If cc.Type = 1 Then 'this is for textboxes
cc.SetPlaceholderText , , "phldr 1"
Else 'this is for all other controls: eg, drop-downs
cc.SetPlaceholderText , , "phldr 2"
End If
Next cc
当我运行它时,占位符文本(在原始英文形式中类似于“输入文本”)完全消失,没有被预期的占位符文本替换。
我尝试从另一个Word文档(而不是 Excel)运行代码——即,不是从表单本身运行代码——并且发生了同样的事情。
但是,如果我以原始形式插入此代码(进行适当的更改,例如将“frm”更改为“ThisDocument”),它就可以正常工作。换句话说,当 VBA 模块在同一个(Word)文档中时,我可以成功使用 SetPlaceholderText 方法。但我真的很想从 Excel 中运行它,因为我将在其中列出多个翻译。