Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在Word中复制表格中的文本并保留格式_Vba_Ms Word - Fatal编程技术网

Vba 在Word中复制表格中的文本并保留格式

Vba 在Word中复制表格中的文本并保留格式,vba,ms-word,Vba,Ms Word,将一个单元格从表复制到另一个单元格时出现问题。我这里说的是两个单词的文档。我可以复制文本,但是项目符号不见了,而且有些格式也没有了 我试过了。格式化文本,但还是做不到 Dim test As Word.Cell 'An error occurs something like "Object variable or With block variable not set" test.Range.FormattedText = CTPDoc.Tables(2).Rows(testCount).Ce

将一个单元格从表复制到另一个单元格时出现问题。我这里说的是两个单词的文档。我可以复制文本,但是项目符号不见了,而且有些格式也没有了

我试过了。格式化文本,但还是做不到

Dim test As Word.Cell

'An error occurs something like "Object variable or With block variable not set"
test.Range.FormattedText = CTPDoc.Tables(2).Rows(testCount).Cells(3).Range.FormattedText
这里有一个例子

假设我们在word文档中有两个表。请参见下面的屏幕截图

假设我们要将数据从表1的单元格1粘贴到表2的单元格1,然后尝试以下操作

Sub Sample()
    Dim tbl1 As Table, tbl2 As Table

    Set tbl1 = ActiveDocument.Tables(1)
    Set tbl2 = ActiveDocument.Tables(2)

    tbl1.Cell(1, 1).Range.Copy
    tbl2.Cell(1, 1).Range.PasteAndFormat (wdFormatOriginalFormatting)
End Sub
这就是宏的作用

希望这有帮助:

这里是一个例子

假设我们在word文档中有两个表。请参见下面的屏幕截图

假设我们要将数据从表1的单元格1粘贴到表2的单元格1,然后尝试以下操作

Sub Sample()
    Dim tbl1 As Table, tbl2 As Table

    Set tbl1 = ActiveDocument.Tables(1)
    Set tbl2 = ActiveDocument.Tables(2)

    tbl1.Cell(1, 1).Range.Copy
    tbl2.Cell(1, 1).Range.PasteAndFormat (wdFormatOriginalFormatting)
End Sub
这就是宏的作用

希望这有帮助:

@Siddharth Rout 你的回答真的很有帮助。这不是我问题的确切答案,但至少我了解了PasteandFormat及其不同类型,如WDFormatOriginalFormat。也许有一天我可以用它

现在是什么解决了我的问题。 使用Siddharth给出的逻辑,我使用了简单的tbl2.Cell1,1.Range.Paste而不是PasteandFormat。实际上,PasteandFormat工作正常,但只有选定的源文件/表出现问题。我认为源表中存在一些格式,当粘贴到另一个单元格中时,它会看起来一团糟。我不确定那到底是什么,但Paste肯定帮我解决了。我希望我也能帮助别人:

@siddharthrout 你的回答真的很有帮助。这不是我问题的确切答案,但至少我了解了PasteandFormat及其不同类型,如WDFormatOriginalFormat。也许有一天我可以用它

现在是什么解决了我的问题。
使用Siddharth给出的逻辑,我使用了简单的tbl2.Cell1,1.Range.Paste而不是PasteandFormat。实际上,PasteandFormat工作正常,但只有选定的源文件/表出现问题。我认为源表中存在一些格式,当粘贴到另一个单元格中时,它会看起来一团糟。我不确定那到底是什么,但Paste肯定帮我解决了。我希望我也能帮助其他人:

你试过Selection.paste和format-wdformatorigin格式吗?我还没有试过。我该如何使用它?很抱歉,我是VBA新手,您能展示一下您尝试了什么吗?Dim test as word.cell test.Range.FormattedText=CTPDoc.Tables2.RowstestCount.Cells3.Range.FormattedText出现了类似对象变量或未设置块变量的错误您尝试过Selection.PasteAndFormat WDFormatOriginal格式设置吗?我还没有尝试过。我该如何使用它?很抱歉,我是VBACan新手,您能展示一下您尝试过的吗?Dim test as word.cell test.Range.FormattedText=CTPDoc.Tables2.RowstestCount.Cells3.Range.FormattedText出现了类似对象变量或块变量未设置的错误我想我可以在我的场景中使用它。这两个表来自不同的文件。我的问题是,在打开目标文件并粘贴所有值之前,首先获取所有值。感谢您上面的代码显示您正在读取表中的值,因此我上面建议的方法将适用于您。我有一个问题…我以为现在一切都正常了,但我在另一台计算机上试过了。PastandFormat行出现错误。上面写着“命令不可用”:你在那台电脑上使用的是哪一个微软Office版本?我用的是2010,我在那里编写代码,2007我在那里测试。我尝试了不同的参数,而不是WDFormatOriginalFormat和一些作品,但格式有点混乱。一个有效,但只有一个实例。我的意思是,当我尝试使用不同的源文件时,格式又被弄乱了。我想我可以在我的场景中使用它。这两个表来自不同的文件。我的问题是,在打开目标文件并粘贴所有值之前,首先获取所有值。感谢您上面的代码显示您正在读取表中的值,因此我上面建议的方法将适用于您。我有一个问题…我以为现在一切都正常了,但我在另一台计算机上试过了。PastandFormat行出现错误。上面写着“命令不可用”:你在那台电脑上使用的是哪一个微软Office版本?我用的是2010,我在那里编写代码,2007我在那里测试。我尝试了不同的参数,而不是WDFormatOriginalFormat和一些作品,但格式有点混乱。一个有效,但只有一个实例。我的意思是,当我尝试使用不同的源文件时,格式又被弄乱了。