【发布时间】:2012-09-02 21:02:51
【问题描述】:
更多细节:
- 我正在将(大量)带有内容控件的文档插入到单个文档中。
- 每个文档中的一个内容控件是一个标题控件(链接到文档属性),它自然会收到与插入时目标文档的标题相同的值。
- 使用 word 或 vba 重命名控件的标题和/或标签并不能解决问题(奇怪!)
- 我建议的解决方案是创建一个具有不同名称的新控件,从原始标题控件复制 .range.text,然后删除标题控件。
我有一个循环,它遍历所有需要更改的文件,效果很好。但是,无论我做什么,我创建的任何新控件都出现在文档的开头,而不是在正确的位置(前面有一个带有文档代码的控件)。
想法?顺便说一句,更改控件名称不起作用是否有任何合乎逻辑的原因?
当前代码:
Sub FieldChanger()
Dim docCur As Document
Dim strCurPath As String
Dim strCurFile As String
Dim rngTitle As Range
Dim strTitle As String
Dim ccName As ContentControl
strCurPath = "C:\Users\User\Desktop\BGS\Final\"
strCurFile = Dir(strCurPath & "*.docx")
Do While strCurrentFile <> ""
Set docCur = Application.Documents.Open(strCurPath & strCurFile)
With docCur.ContentControls
.Item(1).LockContents = False //Unlock outer content control
Set rngTitle = .Item(3).Range
strTitle = rngTitle.Text
rngTitle = rngTitle.Move(wdCharacter, 1)
ccName = rngTitle.ContentControls.Add(wdContentControlRichText) //This line throws a 4198 error
ccName.Title = "ccName"
ccName.Tag = "ccName"
ccName.Range = strTitle
ccName.LockContentControl = True
.Item(3).LockContentControl = False
.Item(3).Delete
.Item(1).LockContents = True //Lock outer content control
End With
docCur.Save
docCur.Close
strCurFile = Dir
Loop
End Sub
【问题讨论】:
-
通常会,但没想到我会用上面的代码去任何地方。曾尝试使用 docCur.ContentControls.Add 添加项目,但这会将其放在文档的开头(不记得确切但可能在上面的分组内容控件 .Item(1) 之前将其转储)