从另一个文档复制粘贴格式化文本,不带表格单元格

问题描述 投票:0回答:2

我正在从另一个文档复制/粘贴格式化文本。文本位于该文档的表格中。当我删除最后一个字符时,它会删除最后一段的格式。但是,如果我添加最后一个字符,它也会占用该表的单元格。从没有表格单元的文档中获取格式化文本的最佳解决方案应该是什么?

Private Sub DeInsert_Click()


    If De_List.ListIndex = -1 Then
        
        LBL DeInfoLB, " Please! select an Heading from above list.", True
        
    Else
        
        Dim cDeHeadR As Range
        Dim cSelection As Range
        Dim CelRange As Range
        Dim r As Long
        
        
        Dim cDeTbl As Word.Table
        
        r = De_List.List(De_List.ListIndex, 4)
                
        Set dTBL = oDoc.Tables(1)
        
        Set CelRange = dTBL.Cell(r, 4).Range
        CelRange.MoveEnd wdCharacter, -1
        
        CelRange.Copy
        Set cSelection = Selection.Range
        
        'Selection.Paste
        cSelection.PasteAndFormat wdFormatOriginalFormatting

    End If

End Sub
vba ms-word copy cell
2个回答
0
投票

我已经在 Word 365 上测试了您的代码,没有任何问题。您可以尝试以下操作。

        cSelection.PasteAndFormat wdSingleCellText

微软参考文档:

WdRecoveryType 枚举(Word)


0
投票

我可以复制这个问题。

两种解决方法。两者都可能需要更多的工作。

' Copy the entire cell then use ConvertToText

Set CelRange = dTBL.Cell(r, 4).Range
CelRange.Copy
Set cSelection = Selection.Range
With cSelection
  .Paste
  .Tables(1).ConvertToText Separator:= wdSeparateByParagraphs, NestedTables:=False
End With


' Or use FormattedText
Set cSelection = Selection.Range
With cSelection
  .FormattedText = dTBL.Cell(r,4).Range.FormattedText
  ' that inserts the formatted range, but with a char(13) character at the end. So delete it.
  .Characters(.Characters.Count).Delete
End With
© www.soinside.com 2019 - 2024. All rights reserved.