微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从另一个Word Doc内容控制中提取MS Word内容控件

如何解决从另一个Word Doc内容控制中提取MS Word内容控件

我这里有一些代码,可以打开两个Word文档,并且我试图将一个Content Control(Rich Text)的内容传输到另一个Documents Rich Text Content Control。一切都正确转移了,但是由于某种原因,它复制完自己之后,只会继续粘贴新的空白行,并且永远不会移至For Each循环中的下一个CC。有什么想法可以强制将其粘贴到下一个内容控件吗?我尝试过PasteandFormat,它也有同样的问题。

    Sub PreClear()
    
    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
    
    Set wrd = CreateObject("Word.Application")
    wrd.displayAlerts = 0
    wrd.Visible = True
    Set pc = wrd.Documents.Open("DestinationFilePath",ReadOnly:=True)
    
    Set wrdm = CreateObject("Word.Application")
    wrdm.displayAlerts = 0
    wrdm.Visible = False
    Set pcm = wrdm.Documents.Open("SourceFilePath",ReadOnly:=True)
    
    
    For Each CC In pc.ContentControls
       
        CCTag = CC.Tag
    
             
        If CCTag <> "" And Left(CCTag,4) = "PCM_" Then
                If CC.Type = wdContentControlRichText Or CC.Type = wdContentControlText Then
                    pcm.SelectContentControlsByTag(CCTag).Item(1).copy
                    CC.Range.Paste
                End If
        End If
    
    Next CC
      
    
    End Sub

解决方法

从您发布的代码中,我看不到代码被卡住的任何原因,但是不需要使用剪贴板。相反,您可以简单地将一个范围的文本或格式文本分配给另一个,如下所示:

  If Left(CC.Tag,4) = "PCM_" Then
    If CC.Type = wdContentControlRichText Then
      CC.Range.FormattedText = pcm.SelectContentControlsByTag(CC.Tag).item(1).Range.FormattedText
    ElseIf CC.Type = wdContentControlText Then
      CC.Range.Text = pcm.SelectContentControlsByTag(CC.Tag).item(1).Range.Text
    End If
  End If

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。