我正在尝试将表格单元格中的文本复制到新文档中。一切正常,但粘贴的文本已丢失复制文本的样式。样式是一种新的段落样式,带有一些常规的格式选择,例如字体类型,字体大小和文本缩进。要粘贴我使用...
Documents.Add.Content.PasteAndFormat (wdFormatOriginalFormatting)
我想我知道问题所在。如果我复制整个表格单元格并粘贴,它将使格式化文本保持所有段落的正确样式。但它会将其粘贴到表格单元格中,我只想要没有表格的文本。
因此我在复制时排除了“表格单元格结束标记(看起来像太阳)”。然后它只会粘贴文本(没有表格,因为我不想这样做),但最后一段失去了风格。
如果我站在表格单元格的末尾添加一个额外的段落标记(按Enter键)并复制没有“表格单元格结束标记”的单元格,它就像我不想做的那样......差不多。目标文档没有表格(是的!),所有段落都有正确的样式(是!),但最后还有一个不需要的额外段落标记。当然,表格单元格中还有一个不需要的额外空段落。
有任何建议如何解决?
答案 0 :(得分:1)
首先,如果没有其他选择,你应该只使用复制/粘贴。为此,Range.FormattedText属性可以工作,因此不需要复制/粘贴。
由于你没有给出好的重复步骤,我不确定以下是否完全正确,但它适用于我测试的场景。我在文档中创建了一个表。我想在另一个文档中重用的文本位于第一行的第二个单元格中(Cell(1,2))。我创建了一个段落样式并将其应用于单元格。我使用单元格范围来获取此内容,并获取范围中的字符数。
然后我将Range.FormattedText分配给新文档的Content.FormattedText。如你所说,这带来了一个Chr(13),所以我从文本中删除了那个字符(inumchars-1)。原始样式被带入目标文档,只有一个段落标记(并且使用导入的样式进行格式化,应该如此)。
Sub CellContentToNewDoc()
Dim rng As word.Range
Dim rngNew As word.Range
Dim newDoc As word.Document
Dim lNumChars As Long
Set rng = ActiveDocument.Tables(1).Cell(1, 2).Range
inumchars = Len(rng)
Set newDoc = Documents.Add
Set rngNew = newDoc.content
rngNew.FormattedText = rng.FormattedText
rngNew.Characters(inumchars - 1).Delete
End Sub