0

我这里有一些代码可以打开两个 word 文档,我正在尝试将一个内容控件(富文本)的内容传输到另一个文档富文本内容控件。一切都正确转移,但由于某种原因,在它复制自身之后,它只是不断粘贴新的空白行,并且永远不会移动到 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
4

1 回答 1

1

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

  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
于 2020-08-18T15:02:23.863 回答