Excel Vba宏在word中复制表格会产生不同的格式设置结果

Excel Vba宏在word中复制表格会产生不同的格式设置结果,excel,vba,ms-word,Excel,Vba,Ms Word,我在excel中创建了一个测试宏,它可以复制一个范围并粘贴到word中作为一个表,同时保留格式。该宏生成的结果几乎与普通复制和粘贴相同,只是单元格中的值位置太靠近顶部。是否有其他方法复制或传输表?视觉差异链接 我尝试过简单的.Paste和也.pasteExcellable假,假,假,但两者产生相同的问题。我想这是一个范围问题。粘贴,但我也不能使用。在word文档中从excel vba中选择 Sub test22() Set shet = ActiveSheet Set wdDoc = Acti

我在excel中创建了一个测试宏,它可以复制一个范围并粘贴到word中作为一个表,同时保留格式。该宏生成的结果几乎与普通复制和粘贴相同,只是单元格中的值位置太靠近顶部。是否有其他方法复制或传输表?视觉差异链接

我尝试过简单的.Paste和也.pasteExcellable假,假,假,但两者产生相同的问题。我想这是一个范围问题。粘贴,但我也不能使用。在word文档中从excel vba中选择

Sub test22()

Set shet = ActiveSheet
Set wdDoc = ActiveDocument

shet.Range("A1:B4").Copy

wdDoc.Paragraphs(1).Range.Paste

End Sub

我重现了你的问题。它似乎在表中的每一行后面都添加了一个空格。所以在单词本身中,Home>段落>行和段落间距>删除段落后的空格似乎可以解决这个问题

在Word VBA中,我可以对以下各项执行相同的操作:

ActiveDocument.Tables(activedocument.Tables.Count).Range.Paragraphs.SpaceAfter = False
因此,我认为这将起作用:

Sub test22()
Set shet = ActiveSheet
Set wdDoc = ActiveDocument

shet.Range("A1:B4").Copy

wdDoc.Paragraphs(1).Range.Paste
wdDoc.Tables(activedocument.Tables.Count).Range.Paragraphs.SpaceAfter = False
End Sub

请注意,我在Excel中复制一个表,并使用了PasteExcelTable命令。在录制宏时,奇怪的Word不允许我选择整个Word表,所以我只是摸索着获取这行代码。

我重现了您的问题。它似乎在表中的每一行后面都添加了一个空格。所以在单词本身中,Home>段落>行和段落间距>删除段落后的空格似乎可以解决这个问题

在Word VBA中,我可以对以下各项执行相同的操作:

ActiveDocument.Tables(activedocument.Tables.Count).Range.Paragraphs.SpaceAfter = False
因此,我认为这将起作用:

Sub test22()
Set shet = ActiveSheet
Set wdDoc = ActiveDocument

shet.Range("A1:B4").Copy

wdDoc.Paragraphs(1).Range.Paste
wdDoc.Tables(activedocument.Tables.Count).Range.Paragraphs.SpaceAfter = False
End Sub

请注意,我在Excel中复制一个表,并使用了PasteExcelTable命令。奇怪的是,在录制宏时,Word不允许我选择整个Word表,所以我只是摸索着得到这行代码。

解决方法是删除spaceafter,就像Doug建议的那样,并为像我这样具有不同行间距默认值的行间距设置为1

Sub test22()

Set shet = ActiveSheet
Set wdDoc = ActiveDocument

shet.Range("A1:B4").Copy

wdDoc.Paragraphs(1).Range.Paste
wdDoc.Tables(1).Range.Paragraphs.SpaceAfter = False
wdDoc.Tables(1).Range.ParagraphFormat.LineSpacing = LinesToPoints(1)
End Sub

解决这个问题的方法是删除spaceafter,就像Doug建议的那样,并为那些像我这样具有不同的线间距默认值的人将线间距设置为1

Sub test22()

Set shet = ActiveSheet
Set wdDoc = ActiveDocument

shet.Range("A1:B4").Copy

wdDoc.Paragraphs(1).Range.Paste
wdDoc.Tables(1).Range.Paragraphs.SpaceAfter = False
wdDoc.Tables(1).Range.ParagraphFormat.LineSpacing = LinesToPoints(1)
End Sub

问题确实是行距和段落间距!代码似乎并没有解决这个问题,但至少我知道现在该去哪里寻找并尝试修复它!谢谢问题确实是行距和段落间距!代码似乎并没有解决这个问题,但至少我知道现在该去哪里寻找并尝试修复它!谢谢由于您不熟悉堆栈溢出:请记住单击回答问题的贡献旁边的复选标记-即使它是您自己的。这是允许的。这会告诉其他人问题不再存在。由于您是堆栈溢出新手:请记住单击回答问题的贡献旁边的复选标记,即使它是您自己的。这是允许的。根据网站指南,所有与问题相关的信息都应该在问题中,而不依赖外部链接。尽管您的问题已经解决,但Stack Overflow的概念是一个Q&a存储库,其他人可以在其中找到有关其问题的信息。图像链接不是SO的内部链接,因此可能对未来的访问者没有帮助。请您使用问题下的链接将图片直接添加到问题中,好吗?它将使用imgur。谢谢:-根据网站指南,所有与问题相关的信息都应该在问题中,而不依赖外部链接。尽管您的问题已经解决,但Stack Overflow的概念是一个Q&a存储库,其他人可以在其中找到有关其问题的信息。图像链接不是SO的内部链接,因此可能对未来的访问者没有帮助。请您使用问题下的链接将图片直接添加到问题中,好吗?它将使用imgur。谢谢各位:-