如何将Excel查询表复制到word中,文本位于两者之间
我正在尝试设置一个宏,根据Excel查询表是否重试数据,将其内容复制到word。并用一行文字将它们分开 目前,我的代码成功地完成了前半部分,但它们结合在一起破坏了布局。 我希望保持表格插入模块化,因为我以后需要添加更多表格 出于某种原因,我的Notes表最终位于顶部,这不是一个大问题,但我更愿意保持插入的顺序如何将Excel查询表复制到word中,文本位于两者之间,excel,vba,ms-word,Excel,Vba,Ms Word,我正在尝试设置一个宏,根据Excel查询表是否重试数据,将其内容复制到word。并用一行文字将它们分开 目前,我的代码成功地完成了前半部分,但它们结合在一起破坏了布局。 我希望保持表格插入模块化,因为我以后需要添加更多表格 出于某种原因,我的Notes表最终位于顶部,这不是一个大问题,但我更愿意保持插入的顺序 Sub WordOutput3() Dim objword Dim objdoc Dim Selection As Excel.Range Dim WordTable 'Optimiz
Sub WordOutput3()
Dim objword
Dim objdoc
Dim Selection As Excel.Range
Dim WordTable
'Optimize Code
Application.ScreenUpdating = False
Application.EnableEvents = False
'Create Word Doc with Thin Margins
Set objword = CreateObject("Word.Application")
Set objdoc = objword.Documents.Add
objword.Visible = True
objdoc.PageSetup.TopMargin = Application.CentimetersToPoints(1.27)
objdoc.PageSetup.BottomMargin = Application.CentimetersToPoints(1.27)
objdoc.PageSetup.LeftMargin = Application.CentimetersToPoints(1.27)
objdoc.PageSetup.RightMargin = Application.CentimetersToPoints(1.27)
objword.Activate
'Transactions
If WorksheetFunction.CountA(Range("Transactions")) >= 1 Then
Set Selection = ThisWorkbook.Worksheets("TF_Flags").ListObjects("Transactions").Range
Selection.Copy
'Paste Table into MS Word
objdoc.Paragraphs(1).Range.PasteExcelTable _
LinkedToExcel:=False, _
WordFormatting:=False, _
RTF:=False
objdoc.Paragraphs.Add
'Autofit Table so it fits inside Word Document
objword.ActiveDocument.Tables(1).AutoFitBehavior (2)
'Clear The Clipboard
Application.CutCopyMode = False
End If
'notes
If WorksheetFunction.CountA(Range("Notes")) >= 1 Then
Set Selection = ThisWorkbook.Worksheets("TF_Flags").ListObjects("Notes").Range
Selection.Copy
'Paste Table into MS Word
objdoc.Paragraphs(1).Range.PasteExcelTable _
LinkedToExcel:=False, _
WordFormatting:=False, _
RTF:=False
'Autofit Table so it fits inside Word Document
objword.ActiveDocument.Tables(1).AutoFitBehavior (2)
'Clear The Clipboard
Application.CutCopyMode = False
End If
End Sub
您的所有表都被粘贴到相同的位置,因为您使用的代码将它们放在第一段中
objdoc.Paragraphs(1).Range
您需要对此进行更改,以便始终将表添加到文档的最后一段
objdoc.Paragraphs.Last.Range
每个表之后都需要有一个空段落,以防止Word将表合并到一个表中。在代码中,在添加第一个表后添加一个新段落,objdoc.parations.add
,但不使用它。当您有条件地添加第二个表时,最好移动该行代码,以便在粘贴到第二个表之前添加段落,即
'Paste Table into MS Word
objdoc.Paragraphs.Add
objdoc.Paragraphs.Last.Range.PasteExcelTable _
LinkedToExcel:=False, _
WordFormatting:=False, _
RTF:=False
这一点很有效,并且以一种像我这样的noob可以理解的方式解释了它:)你知道为什么表格的添加顺序不正确吗,或者我应该把它作为一个单独的问题吗?如果你将每个表格插入文档的最后一段,它们将按照插入的顺序,即第一、第二、第三,我能想到的唯一可能的原因是第一次粘贴没有在第二次执行之前完成,在这种情况下Word可能没有更新它的段落集合。