もう少し詳細:
- コンテンツコントロールを含む(多くの)ドキュメントを1つのドキュメントに挿入しています。
- 各ドキュメントのコンテンツコントロールの1つは、タイトルコントロール(ドキュメントプロパティにリンクされている)です。これは、挿入時に宛先ドキュメントのタイトルと同じ値を自然に受け取ります。
- コントロールのタイトルやタグの名前を変更し、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