Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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
如何将Excel查询表复制到word中,文本位于两者之间_Excel_Vba_Ms Word - Fatal编程技术网

如何将Excel查询表复制到word中,文本位于两者之间

如何将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

我正在尝试设置一个宏,根据Excel查询表是否重试数据,将其内容复制到word。并用一行文字将它们分开

目前,我的代码成功地完成了前半部分,但它们结合在一起破坏了布局。 我希望保持表格插入模块化,因为我以后需要添加更多表格

出于某种原因,我的Notes表最终位于顶部,这不是一个大问题,但我更愿意保持插入的顺序

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可能没有更新它的段落集合。