首页 > 解决方案 > 如何将文本从一个 word 文档拉到另一个?

问题描述

我正在尝试将 excel 电子表格和 word 模板中的内容提取到另一个模板中。我在电子表格中的命名范围与单词模板标签中的各自主页匹配,以及与目标标签匹配的源文档标签。excel 文档中的所有内容都已成功传输,但我无法将 word 文档文本传输过来。标签的开头说明信息是位于 excel doc 中还是 word doc 中。

PC_ 用于 excel(一切正常) PCM_ 用于 Word。pc.word 文档是所有内容都应传输到的模板。显示“Yay”的消息框确实会弹出,所以我知道内容控件​​选择了正确的类型,但没有任何文本传输过来。关于这里的代码有什么问题的任何想法?

Sub PCExample()

Dim CS As Workbook
Dim wrd As Word.Application
Dim wrdm As Word.Application
Dim pc As Word.Document
Dim pcm As Word.Document
Dim CC As ContentControl
Dim CCTag As String
Dim CStxt As String
Dim PCMtxt As String

Set CS = ThisWorkbook

Set wrdm = CreateObject("Word.Application")
wrdm.DisplayAlerts = 0
wrdm.Visible = True
Set pcm = wrdm.Documents.Open("FilePath", ReadOnly:=True)

Set wrd = CreateObject("Word.Application")
wrd.DisplayAlerts = 0
wrd.Visible = True
Set pc = wrd.Documents.Open("FilePath", ReadOnly:=True)


For Each CC In pc.ContentControls
    On Error Resume Next
    CCTag = CC.Tag
    If CCTag <> "" And Left(CCTag, 3) = "PC_" Then
        CStxt = Range(CCTag)

            If CC.Type = wdContentControlRichText Or CC.Type = wdContentControlText Then
                CC.Range.Text = CStxt

            ElseIf CC.Type = wdContentControlComboBox Or CC.Type = wdContentControlDropdownList Then
                CC.DropdownListEntries.Item(CStxt).Select

            ElseIf CC.Type = wdContentControlCheckBox Then
                    CC.Checked = False
                If CStxt = "True" Then
                    CC.Checked = True
                ElseIf CStxt = "False" Then
                    CC.Checked = False
                Else
                    CC.Checked = False
                End If
            End If
    ElseIf CCTag <> "" And Left(CCTag, 4) = "PCM_" Then
        PCMtxt = pcm.ContentControls(CCTag).Range.Text
            If CC.Type = wdContentControlRichText Or CC.Type = wdContentControlText Then
                MsgBox "Yay"
                CC.Range.Text = PCMtxt
            End If
    End If
Next CC
  

End Sub

标签: excelvbams-word

解决方案


推荐阅读