当前位置: 首页 > 知识库问答 >
问题:

粘贴时丢失表格单元格样式

裴欣然
2023-03-14
Documents.Add.Content.PasteAndFormat (wdFormatOriginalFormatting)

所以我在复制时排除了“表格单元格结束标记(看起来像太阳)”。然后它将只粘贴文本(没有表格,因为我不希望它这样做),但最后一段失去了样式。

如果我在表格单元格末尾添加一个额外的段落标记(按Enter)并复制没有“表格单元格结束标记”的单元格,它就像我不想做的一样工作...几乎。目标文档没有表(是!)而且所有段落都有正确的样式(是的!),但最后也有一个不必要的额外段落标记。当然还有表格单元格中多余的空段落。

有什么建议如何解决?

共有1个答案

冯星阑
2023-03-14

首先,只有在别无选择的情况下才应该使用复制/粘贴。为此,Range.FormattedText属性起作用,因此不需要复制/粘贴。

由于您没有给出好的复制步骤,我不确定下面的步骤是否完全正确,但它适用于我测试的场景。我在文档中创建了一个表。我想在另一个文档中重用的文本位于第一行的第二个单元格(单元格(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
 类似资料:
  • table单元格选中,存在合并的单元格时,选中样式和期望的不一样,如何解决这个问题? 不存在单元格合并时不存在这个问题: 存在单元格合并时: 想要的是这种 目前合并实现方案,是获取起始点击的单元格坐标,为选中的每一个单元格坐标添加选中样式。 有无好的解决办法?

  • 我的excel工作表中有两个单元格,其中一个单元格包含如下字符串: 而另一个单元格有欧元货币,例如: 现在我想复制这两个值,即“总额”和“223.463.687€”,并将其复制到第三个单元格中。我使用的公式是这样的: 我得到以下结果: 但是我应该: 注: 货币的格式是德语格式,意思是“.”(小数点)和“,”(昏迷)扮演相反的角色。在德语格式中,“,”是小数点,在英语中是“。”。

  • 我正在尝试创建一个代码,在一个单元格中搜索诸如“蓝色”之类的颜色值,如果在该单元格中找到该值,请将该值粘贴到另一个单元格,然后在几百种颜色的范围内重复此操作。 一旦发生这种情况,对该列中的下一个单元格再次执行相同的过程,并粘贴到相应行中的另一个单元格中,直到对每个填充的单元格都搜索了所有颜色值。 我已经获得了创建Excel工作表的代码,该工作表将提取一些预定义的值,但我不确定如何扩展代码以包含数百

  • setColumn 样式影响范围为整列。 设置 range 参数为 A1:D1,第一反应是设置第一行的前四个单元格样式,但是实际效果确是设置 第一列、第二列、第三列、第四列 整列。 函数原型 setColumn(string $range, double $width [, resource $formatHandler]); string $range $config = ['path' =>

  • setRow 样式影响范围为整行。 设置 range 参数为 A1:D1,第一反应是设置第一行的前四个单元格样式,但是实际效果确是设置 第一行整行。 如果是 A1:B3 ,就会设置 第一行、第二行、第三行样式,因为单元格范围覆盖了 第一行、第二行、第三行。 函数原型 setRow(string $range, double $height [, resource $formatHandler]);

  • > sheet1:用户单击运行VBA的按钮。 第2:VBA选择第D列上的第一个非空白单元格 Range(“d”&rows.count).end(xlUp).offsed(1).select 多谢!