我正在从另一个文档复制/粘贴格式化文本。文本位于该文档的表格中。当我删除最后一个字符时,它会删除最后一段的格式。但是,如果我添加最后一个字符,它也会占用该表的单元格。从没有表格单元的文档中获取格式化文本的最佳解决方案应该是什么?
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
我已经在 Word 365 上测试了您的代码,没有任何问题。您可以尝试以下操作。
cSelection.PasteAndFormat wdSingleCellText
微软参考文档:
我可以复制这个问题。
两种解决方法。两者都可能需要更多的工作。
' 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